私は現在、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
update メソッドにパラメーターを追加しようとしましたが、[Control] string supplierOrderNumber
それは機能しますが、その値を自動的にマップする方法を本当に知りたいです。
コントロールを使用したソリューションも見まし<asp:DynamicEntity />
たが、それはやややり過ぎのようです。
だから私の質問は次のとおりです: TryUpdateModel
TextBox 値をマップするメソッドを取得することは可能ですDynamicEntities
か、それともコントロールを完全に使用する必要がありますか、それとも他の素晴らしい解決策はありますか?
ありがとう!