Обвързване на данни

Почти всяко уеб приложение работи с данни, независимо дали се съхраняват в база данни, XML файл, структуриран файл или някъде другаде. Извличането на тези данни е само част от задачата. Съвременните приложения също се нуждаят от удобен, гъвкав и атрактивен начин за показване на тези данни на уеб страница.

За щастие, ASP.NET поддържа усъвършенстван и напълно функционален . Свързването на данни ви позволява да обвържете извлечени обекти с данни към един или повече контроли на уеб страница, които след това автоматично ги изобразяват. Това означава, че не е нужно да губите време в подготовка на логиката за преминаване през редове от множество колони и манипулиране на отделни контроли.

За да направите живота още по-лесен, можете да използвате контролите за източник на данни, които са налични в ASP.NET. Тези контроли ви позволяват да дефинирате декларативна връзка между страница и източник на данни (като база данни или потребителски компонент за достъп до данни). Контролите на източника на данни са забележителни със способността си да се свързват с инфраструктура за обвързване на данни. След като такъв контрол на източника на данни бъде конфигуриран, той може да бъде свързан с уеб контроли по време на проектиране, а ASP.NET се грижи за всички подробности.

Свързването на данни е средство, което ви позволява да свържете източник на данни с контрола, за да показвате автоматично данни в тази контрола. Ключовата характеристика на обвързването на данни е неговатапо-скоро декларативна, отколкото програмна природа. Това означава, че обвързването на данни е дефинирано извън кода, заедно с контролите, на страницата .aspx. Предимството е, че този подход позволявапо-ясно разделение между контролите и логиката на кода на уеб страницата.

В ASP.NET повечето контроли (включително TextBox, LinkButton, Image и много други) поддържат обвързване на данни с една стойност. Това обвързване позволява свойство на контрола да бъде обвързано с източник на данни, но контролата може да показва само една стойност. Обвързваемото свойство не трябва да представлява нещо видимо на страницата. Например не само можете да обвържете текста на хипервръзка, като зададете свойството Hyperlink.Text, но можете също да обвържете свойството NavigateUrl, за да укажете дестинацията на връзката. За да използвате обвързване с една стойност, се създават изрази за обвързване на данни.

Много уеб контроли поддържат обвързване с повтаряща се стойност, което означава, че могат да показват набори от елементи. Контролите с множество стойности включват списъчни полета и показващи таблици (ListBox и GridView са два примера). Ако контрола поддържа това обвързване, тя винаги излага свойство DataSource, което приема обект с данни. (Обикновено обектите с данни са някакъв вид колекция и всеки елемент в колекцията представлява запис от данни.)

Когато зададете свойството DataSource, вие създавате логическа връзка между контролата на сървъра и обекта с данни, който съдържа информацията, която трябва да се покаже. Това обаче не попълва директно контролата с данни. За да постигнете това, имате нужда от метода DataBind() на контролата, който преминава през DataSource, извлича данните и опреснява страницата. Свързването с множество стойности е най-мощният тип обвързване.

И двата вида подвързванесе обсъждат в следващите раздели.

Обвързване с една стойност

Контролите, които поддържат обвързване на данни в режим на единична стойност, позволяват някои от техните свойства да бъдат обвързани с израз за обвързване на данни. Този израз се въвежда в .aspx частта на маркирането на страницата (не в кодовото поле) и се поставя между разделителите. Ето един пример:

Може да изглежда като скриптов блок, но не е. Ако се опитате да напишете някакъв код вътре в дескриптора, ще получите грешка. Единственото нещо, което можете да поставите тук, е валиден обвързващ израз. Например, ако имате публична или защитена променлива с име EmployeeName, можете да напишете следното:

За да оцените обвързващ израз като този, трябва да извикате метода Page.DataBind() във вашия код. Когато този метод бъде извикан, ASP.NET проверява всички изрази на страницата и ги замества със съответните им стойности (в този случай текущата стойност на променливата EmployeeName). Ако забравите да извикате метода DataBind(), обвързващият израз няма да попълни контролата - вместо това той просто ще бъде отхвърлен, когато страницата се преобразува в HTML маркиране.

Можете да поставите изрази за обвързване на данни почти навсякъде на страницата, но обикновено изразът за обвързване на данни се присвоява на свойство в манипулатора на контролата. Помислете за примерна страница, която използва множество изрази за обвързване на данни:

Както можете да видите, не само можете да обвържете свойството Text на контрола Label или TextBox, но можете също да използвате други свойства като ImageUrl на контролата Image, NavigateUrl на контролата HyperLink и дори src атрибута на статичен HTML таг.

Можете също така да поставите израза за закотвяне навсякъде на страницата без закотвянето към никакво свойство или атрибут. Например предишната уеб страница съдържа anchor израз между таговетеи. По време на обработката полученият текст ще бъде поставен на страницата и ще бъде показан с удебелен шрифт. Можете дори да поставите израза извън секцията