C# 在列表视图中使用相同的模板进行编辑和插入

C# 在列表视图中使用相同的模板进行编辑和插入,c#,model-binding,asp.net-4.5,C#,Model Binding,Asp.net 4.5,我正在使用WebForms.NET4.5和asp:ListView和模型绑定。在此范围内,我使用: <EditItemTemplate> <InsertItemTemplate> 在这里,您还可以使用用于插入的编辑模板。您最好为自己开发一个自定义的列表视图 使用一个模板和init列表视图将该模板用于另一个模板。您可能还需要自定义保存按钮,以便在任何模式下切换命令名 这里提到的代码将引导您朝着上述方向前进 我认为您的问题与此线程中的问题相同。也许您应该将此公共布局提取为

我正在使用WebForms.NET4.5和asp:ListView和模型绑定。在此范围内,我使用:

<EditItemTemplate>
<InsertItemTemplate>

在这里,您还可以使用用于插入的编辑模板。

您最好为自己开发一个自定义的
列表视图

使用一个模板和
init
列表视图
将该模板用于另一个模板。您可能还需要自定义
保存
按钮,以便在任何模式下切换
命令名

这里提到的代码将引导您朝着上述方向前进


我认为您的问题与此线程中的问题相同。

也许您应该将此公共布局提取为单独的控件。我是在ASP.Net MVC中这样做的。

如果您使用
而不是
,用户控件会工作吗?@RichardDeeming这是否意味着模型绑定不再工作,因为模型绑定需要使用BindItem?我不这么认为。好的,这两种语法都应该与模型绑定一起使用。@RichardDeeming尝试了Bind()语法,并表现出与BindItem ie相同的行为。它显示数据,但不会将其更新回模型和数据库。不幸的是,这是一个webforms项目。如果您有任何示例代码可以在webforms中使用,请让我知道。webforms甚至更多地基于控件。感谢@abhitalks让我再次看到建议的解决方案。我以前看过它,尝试过它,然后因为它不起作用而放弃了它(这是一个列表视图)。然而,用FormView再试一次,根据我更新的原始帖子,它就像一个魔咒。
 <asp:FormView ID="fvData" runat="server"
        ItemType="DataLayer.Models.Country"
        DataKeyNames="Id"
        InsertMethod="InsertRecord"
        SelectMethod="BindData"
        UpdateMethod="UpdateRecord"
        OnDataBound="fvData_DataBound">
        <EditItemTemplate>
            <b>EDIT</b>   
            <div class="row">
                <div class="form-group">
                    <label class="col-md-4 control-label" for="txtCountryName">Name</label>
                    <div class="col-md-8">
                        <asp:TextBox runat="server" ID="txtCountryName" name="txtCountryName" placeholder="My Country" CssClass="form-control" Text='<%#: BindItem.Name %>'></asp:TextBox>
                        <dav:DataAnnotationsValidator CssClass="label label-danger" ID="davSchoolName" runat="server" ValidationGroup="Default" MetadataSourceID="msCountryInformation" ControlToValidate="txtCountryName" ObjectProperty="Name" Display="Dynamic" />
                    </div>
                </div>
            </div>
        </EditItemTemplate>
    </asp:FormView>
protected void Page_Init()
{
    if (!IsPostBack)
    {
        fvData.InsertItemTemplate = fvData.EditItemTemplate;
    }
}