【问题标题】:WebForms Model Binding: Automatically map updated values to ItemWebForms 模型绑定:自动将更新的值映射到 Item
【发布时间】:2013-09-02 03:33:35
【问题描述】:

我目前正在开发一个小虚拟应用程序,以了解 WebForms 中新的(很棒的)模型绑定。我已经成功地在 ListView 和 FormView 中列出了数据,但是我一直在更新数据。

我有一个非常简单的 FormView 控件:

<asp:FormView runat="server" ID="formViewOrderDetail" 
    ItemType="ModelBindingDummy.Models.Order" DataKeyNames="Id"
    SelectMethod="GetOrder" UpdateMethod="UpdateOrder">
    <ItemTemplate>
        <p>Supplier Order Number: <%#: Item.SupplierOrderNumber %></p>
        <asp:LinkButton Text="Edit" runat="server" ID="linkEdit"
                        CommandName="Edit" />
    </ItemTemplate>
    <EditItemTemplate>
        <p>Supplier Order Number: 
            <asp:TextBox runat="server" ID="SupplierOrderNumber" 
                         Text='<%#: Item.SupplierOrderNumber %>' />
         </p>
        <asp:LinkButton Text="Cancel" runat="server" CommandName="Cancel" />
        <asp:LinkButton Text="Save" runat="server" CommandName="Update" />
    </EditItemTemplate>
</asp:FormView>

我的UpdateOrder 方法如下所示:

public void UpdateOrder(int id)
{
    ModelBindingDummy.Models.Order item = GetOrder(id);
    if (item == null)
    {
        ModelState.AddModelError("", String.Format("Item with id {0} was not found", id));
        return;
    }            
    TryUpdateModel(item);

    //All data in the app is in-memory, so no need to actually update
    //the item as it is only a reference
}

现在我的问题是 TryUpdateModel 不起作用。它只是忽略了 TextBox SupplierOrderNumber

中的值

我尝试在更新方法中添加一个参数[Control] string supplierOrderNumber,虽然这可行,但我真的很想看到一种自动映射该值的方法。

我还看到了使用&lt;asp:DynamicEntity /&gt; 控件的解决方案,但这似乎有点过头了。

所以我的问题是:是否有可能获得TryUpdateModel 方法来映射TextBox 值,还是我需要一直使用DynamicEntities 控件,或者还有其他奇特的解决方案吗?

谢谢!

【问题讨论】:

    标签: c# asp.net webforms model-binding


    【解决方案1】:

    您需要使用BindItem.SupplierOrderNumber 而不是Item.SupplierOrderNumber

    【讨论】:

      【解决方案2】:

      您需要使用 DataItem.SupplierOrderNumber 而不是 Item.SupplierOrderNumber

      还有一个类似的问题有更好的解释,但我找不到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多