MVC3 への投稿後に不要な解析/更新からモデルを保護するためのベスト プラクティスは何ですか?
HttpGet-> Product/Edit で呼び出されるコントローラ アクション:
public ActionResult Edit()
{
Product p = new Product();
p.Id = 1;
p.Name = "PC";
Category cat = new Category();
cat.Id = 1;
cat.Name = "Non food";
p.Category = cat;
return View(p);
}
これは編集ビューです。
@model MvcApplication3.Models.Product
@using (Html.BeginForm("Edit", "Product", FormMethod.Post))
{
@Html.HiddenFor(model => model.Id)
@Html.EditorFor(model => model.Name)
<input type="submit" value="Submit" name="go" />
}
ブラウザーが応答を受け取った後、ユーザーは次の html セグメントをページに挿入します。
<input type="text" value="5" name="Category.Id" id="Category_Id"/>
彼はフォームを投稿し、次のコントローラー アクションは "Product" パラメーターを取得します。
//
// POST: /Class1/Edit/5
[HttpPost]
public ActionResult Edit(Product p)
{
//Here: p.Company.Id is 5 !!!
db.Save(p);
return null;
}
問題は、ユーザーが c.Company.Id を投稿/更新することを許可してはならないことです。不要な値を探しているパラメーター構造全体をチェックしたくありません。問題を解決するためのベストプラクティスを探しています。
どんな助けでも大歓迎です!
ベスト、
愚かな