gpt4 book ai didi

asp.net - .NET 4.5 WebForms : do I (still) really have to specify all 3 templates in a FormView?

转载 作者:行者123 更新时间:2023-12-02 18:31:05 27 4
gpt4 key购买 nike

研究 ASP.NET 4.5 WebForms 中新的强类型模型绑定(bind)方法:

Scott Hanselman's example WebForms 模型绑定(bind)(除其他外)的我已经看到了在“编辑”模式下打开的 FormView 的使用,其中包含许多 DynamicControls 例如

<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 的 ItemTemplateEditItemTemplateInsertItemTemplate 将是相同的,除了 ItemTemplate 的控件将处于“ReadOnly”模式.

我(仍然)真的需要在 FormView 中提供三个几乎相同的模板副本吗?

我很高兴使用 DynamicControls,但这里的团队永远不会采用看似 FormView 所需的“3x 复制粘贴”方法,尤其是对于我们的大型模板。

我以为也许:

  • DynamicControls 可以从包含的 FormView 获取其“模式”吗?
  • 我可以使用 FormView 以外的其他内容来包含我的 DynamicControls 吗?
  • 我应该在代码隐藏中管理 DynamicControls 模式以避免模板重复吗?

有什么例子/想法吗?

最佳答案

不,您不必指定所有 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.net - .NET 4.5 WebForms : do I (still) really have to specify all 3 templates in a FormView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282869/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com