我是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”)。
避免重复此类代码的最佳方法是什么?
答案 0 :(得分:1)
您没有太多选择单独指定Bind / Eval部分,但您确实可以控制其他部分。您可以创建包含布局的自定义UserControl。
通常我在这个名为“Mode”的usercontrol中包含一个属性,我将其设置为Edit或View,然后根据此属性更改控件上的enabled / visible属性。您还需要为要在usercontrol中绑定/显示的每个值包含一个属性。
在设计器中放置一些标签,文本框等,并将它们连接到代码后面的属性,将用户控件放在页面中的项目/编辑模板中,并将数据eval / bind绑定到各种属性(确保设置模式使其显示正确)。