投稿データ用のアクション メソッドを作成するのが好きです。UserViewModel があるとします。
public class UserViewModel
{
public int Id { get; set; }
public string Name { get; set; }
}
次に UserController:
public class UserController
{
[HttpGet]
public ActionResult Edit(int id)
{
// Create your UserViewModel with the passed in Id. Get stuff from the db, etc...
var userViewModel = new UserViewModel();
// ...
return View(userViewModel);
}
[HttpPost]
public ActionResult Edit(UserViewModel userViewModel)
{
// This is the post method. MVC will bind the data from your
// view's form and put that data in the UserViewModel that is sent
// to this method.
// Validate the data and save to the database.
// Redirect to where the user needs to be.
}
}
ビューに既にフォームがあると仮定しています。フォームがデータを正しいアクション メソッドにポストすることを確認する必要があります。私の例では、次のようにフォームを作成します。
@model UserViewModel
@using (Html.BeginForm("Edit", "User", FormMethod.Post))
{
@Html.TextBoxFor(m => m.Name)
@Html.HiddenFor(m => m.Id)
}
これらすべての鍵は、MVC が行うモデル バインディングです。私が使用した Html.TextBoxFor のような HTML ヘルパーを利用します。また、追加したビュー コードの一番上の行にも注目してください。@model は、ビューに UserViewModel を送信することを伝えます。エンジンを任せてください。
編集:良い呼び出しです。すべてメモ帳で行いましたが、Id の HiddenFor を忘れていました。