vb asp.net:一种避免在ItemTemplate和EditItemTemplate中重复共同代码的方法

时间:2011-01-26 16:36:11

标签: asp.net vb.net listview formview itemtemplate

我是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>

(注意:除了在ItemTemplate中使用Eval()而不是Bind())

我一直试图避免重复此代码,但没有预期的结果:

  • ListView允许使用LayoutTemplate - 但我没有看到任何在LayoutTemplate中插入此类代码的示例。在LayoutTemplate中插入此代码会导致错误。

  • DetailView允许自动生成代码,但我想使用特定的设计(例如,使用包含某些字段的“fieldset”)。

避免重复此类代码的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您没有太多选择单独指定Bind / Eval部分,但您确实可以控制其他部分。您可以创建包含布局的自定义UserControl。

通常我在这个名为“Mode”的usercontrol中包含一个属性,我将其设置为Edit或View,然后根据此属性更改控件上的enabled / visible属性。您还需要为要在usercontrol中绑定/显示的每个值包含一个属性。

在设计器中放置一些标签,文本框等,并将它们连接到代码后面的属性,将用户控件放在页面中的项目/编辑模板中,并将数据eval / bind绑定到各种属性(确保设置模式使其显示正确)。