Asp.net .NET4.5WebForms:我(仍然)真的必须在FormView中指定所有3个模板吗?
调查ASP.NET 4.5 WebForms中新的强类型模型绑定方法: 在WebForms模型绑定中(除其他外),我看到使用了以“编辑”模式打开的FormView,其中包含许多Asp.net .NET4.5WebForms:我(仍然)真的必须在FormView中指定所有3个模板吗?,asp.net,webforms,model-binding,dynamic-controls,asp.net-4.5,Asp.net,Webforms,Model Binding,Dynamic Controls,Asp.net 4.5,调查ASP.NET 4.5 WebForms中新的强类型模型绑定方法: 在WebForms模型绑定中(除其他外),我看到使用了以“编辑”模式打开的FormView,其中包含许多动态控件,例如 <asp:FormView runat="server" ID="MyForm" ... DefaultMode="Edit"> <EditItemTemplate> <asp:DynamicControl runat="server" ID="Field1" Da
动态控件
,例如
<asp:FormView runat="server" ID="MyForm" ... DefaultMode="Edit">
<EditItemTemplate>
<asp:DynamicControl runat="server" ID="Field1" DataField="Field1" Mode="Edit" />
<asp:DynamicControl runat="server" ID="Field2" DataField="Field2" Mode="Edit" />
</EditItemTemplate>
</asp:FormView>
在我的情况下,我的FormView的ItemTemplate
、EditItemTemplate
和InsertItemTemplate
将是相同的,只是ItemTemplate的控件将处于“只读”模式
我(仍然)真的需要在FormView中提供三个几乎相同的模板副本吗
我很乐意使用DynamicControl,但这里的团队永远不会采用FormView似乎需要的“3倍复制粘贴”方法,特别是对于我们的大型模板
我想也许:
- DynamicControl是否可以从包含的FormView中获取其“模式”
- 我可以使用FormView以外的其他东西来包含我的DynamicControl
- 我是否应该在代码隐藏中管理DynamicControl模式以避免模板重复
有任何示例/想法吗?只需设置AutoGenerateEditButton=“true”。项目模板中的所有输入类型都将可编辑。
您可能必须使用jQuery显示/隐藏文本框和其他输入类型的边框 否,您不必指定所有3个模板。我也遇到过同样的情况,这是我的解决方案:
- 将默认模式设置为最常用的模式
- 然后在表单的代码隐藏中管理表单模式
- 在“代码隐藏”中,将您手工编码的模板(例如EditTemplate)复制到所需的另一个模板
protected void Page_Init() { var action = RouteData.Values["action"].ToString(); switch (action) { case "add": personForm.ChangeMode(FormViewMode.Insert); this.Page.Title += " Add"; break; case "edit": personForm.ChangeMode(FormViewMode.Edit); this.Page.Title += " Change"; break; default: personForm.ChangeMode(FormViewMode.ReadOnly); break; } // Reuse inserttemplate for editing if (personForm.CurrentMode == FormViewMode.Edit) { personForm.EditItemTemplate = personForm.InsertItemTemplate; } }
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ApplicationId,UserId"
>
<EditItemTemplate>
<asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("firstName") %>'></asp:TextBox><br />
<asp:TextBox ID="txtAge" runat="server" Text='<%# Bind("age") %>'></asp:TextBox><br />
<asp:Button ID="btnSave" runat="server" Text="Save" />
</EditItemTemplate>
</asp:FormView>