私はMVC 3でWebアプリケーションを構築していますが、これはおそらくモデルバインディングを理解する上で問題があります。ASP.Net MVCは部分的なビューと継承されたプロパティを強く型付けしました
はまず、私は(名前は無実のオブジェクトのプライバシーを保護するために変更簡潔にするために省略無関係なもの、)かなり標準的なモデルを持っている:
public class ModelBase
{
public int Id { get; set; }
}
public class Order : ModelBase
{
public List<Product> Products { get; set; }
}
public class Product : ModelBase
{
public int OrderId { get; set;}
}
これらの表示や編集のために、私は強くに型付けされたビューを持っていますProductクラスに厳密に型指定された部分ビューを含むOrderクラス。部分図の上部は、次のようになります。
@model Product
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
@Html.HiddenFor(model => model.OrderId)
//loads of actual editable properties
私はこのようなメインビューに部分的に挿入します。
@Html.Partial("EditorTemplates/Product", Model.Products.First())
...とビューがブラウザに表示されたとき、 " Idは」隠された入力は、私が何をしないのです注文ではなく、私は期待して:(
を必要とする製品のIDのIDが含まれています?それは、モデルとビューの構造を変更せずに固定することができますか?
あなたはIdが注文であることをどうやって知っていますか? OrderIdは正しく表示されていますか? – Wil
OrderIdは正しく表示され、Idフィールドには同じ値が表示されます。私は、値がOrder url(/ Order/Step2/10、10はOrder Id)の一部としても存在するため、Orderから来る値であるかどうかはわかりません。 IDフィールドを上書きするのはこの値ですか? – Atrieos
注文IDがこのレコードのIDと同じかどうかは、DBを介して確認できますか? – Wil