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

The*_*dge 9 c# model-binding asp.net-4.5

我正在使用WebForms .NET 4.5和asp:ListView和模型绑定.我正在使用:

<EditItemTemplate>
<InsertItemTemplate>
Run Code Online (Sandbox Code Playgroud)

定义控件的外观.然而,99%的时间这些布局是相同的.有没有办法在INSERT和EDIT中使用一个?或者是否有另一种方法,我可以定义HTML一次并在其中使用它?

我不是在使用<asp:DynamicControl>而是正常<asp:texbox>等等所以我不相信.NET 4.5 WebForms:我(仍然)真的必须在FormView中指定所有3个模板吗?适用.

我已经尝试过用户控件了.当内容被包含在内时,模型绑定被打破,因为没有新值被应用于被插入/编辑的对象.

解决方案更新:

在没有INSERT TEMPLATE的情况下声明表单视图:

 <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>
Run Code Online (Sandbox Code Playgroud)

然后:

protected void Page_Init()
{
    if (!IsPostBack)
    {
        fvData.InsertItemTemplate = fvData.EditItemTemplate;
    }
}
Run Code Online (Sandbox Code Playgroud)

在那里你也使用EDIT模板进行INSERT.

Abh*_*lks 3

最好的选择是为ListView自己制定一个习惯。

使用一个模板,然后init将该ListView模板用于另一个模板。您可能还需要自定义按钮以在任何模式下save切换。CommandName

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

/sf/answers/154199531/

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