10

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

<EditItemTemplate>
<InsertItemTemplate>

定义控件的外观。然而,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>

进而:

protected void Page_Init()
{
    if (!IsPostBack)
    {
        fvData.InsertItemTemplate = fvData.EditItemTemplate;
    }
}

并且您也在使用 EDIT 模板进行 INSERT。

4

2 回答 2

3

你最好的选择是ListView为自己开发一个定制。

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

此处提到的代码将引导您朝上述方向发展。

https://stackoverflow.com/a/2202850/1355315

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

于 2013-11-26T08:24:31.063 回答
0

也许您应该将此通用布局提取为单独的控件。我在 ASP.Net MVC 中执行此操作。

于 2013-11-27T19:15:48.070 回答