vb asp.net: способ избежать повторения общего кода в ItemTemplate и EditItemTemplate - PullRequest
0 голосов
/ 26 января 2011

Я новичок в asp.net.

При использовании FormView в ItemTemplate, EditItemTemplate и InsertItemTemplate имеется большой объем кода, который практически идентичен.

Например:

<asp:ListBox ID="ListBox2" runat="server" Rows="1"  CssClass="field" 
   DataSourceID="StatusList" DataTextField="DESCRIPTION" 
 DataValueField="STAT_ID" SelectedValue='<%# Bind("STAT_ID") %>'>
</asp:ListBox>

(Примечание: за исключением того, что Eval () будет использоваться вместо Bind () в ItemTemplate)

Я пытался избежать повторения этого кода, но без ожиданиярезультат:

  • ListView позволяет использовать LayoutTemplate - но я не видел примеров, которые вставляют этот тип кода в LayoutTemplate.А вставка этого кода в LayoutTemplate приведет к ошибке.

  • DetailView позволяет создавать код автоматически, но я хотел бы использовать конкретный дизайн (например, с использованием «fieldset», которое охватываетнекоторые поля).

Каков наилучший способ избежать повторения такого рода кода?

1 Ответ

1 голос
/ 26 января 2011

У вас нет особого выбора в отношении отдельного указания части Bind / Eval, но у вас есть некоторый контроль над другими частями. Вы можете создать пользовательский элемент управления UserControl, содержащий ваш макет.

Обычно я включаю свойство в этом пользовательском контроле, называемое «Режим», которое я либо устанавливаю в «Правка» или «Просмотр», затем на основании этого свойства я изменяю включенные / видимые свойства в элементах управления. Вам также нужно будет включить свойство для каждого значения, которое вы хотите связать / отобразить в пользовательском контроле.

Поместите некоторые метки, текстовые поля и т. Д. В ваш дизайнер и подключите их к свойствам вашего кода, поместите пользовательский контроль на вашей странице в свой элемент item / edit template и eval / bind к вашим данным с различными свойствами (не забудьте установить режим, чтобы он отображался справа).

...