ユーザーが一連のデータベース レコードを段階的に確認できるようにする MVC アクション メソッドを作成しようとしています。ユーザーが更新を投稿するたびに、更新がデータベースに送信され、レビューのために新しいレコードが取得およびレンダリングされます。
ただし、私の MVC ビューは、投稿されたビュー モデルと、データベース クエリの結果として作成された新しいビュー モデルの両方のデータを組み合わせているようです。ビューがビュー モデルからプロパティ値を単純にレンダリングする場合、渡されたビュー モデル インスタンスの値を正しく使用しますが、HTML フォーム コントロールをビュー モデル プロパティにバインドする場合は、ポストされたビュー モデルの値を使用します。これは、1 つのビューが、1 つのビュー モデル インスタンスの 1 つのプロパティに対して 2 つの異なる値を表示できることを意味します。
これはアクションメソッドの非常に単純化されたバージョンです...
public ActionResult Index(MyViewModel model)
{
if (ModelState.IsValid)
{
// Write the posted model data to the repository
// ...
// Retrieve a new entity for the user to work on
var alternate = new MyViewModel { Name = "New Name" };
return View(alternate);
}
return View(model);
}
...そしてビューモデル...
public class MyViewModel
{
[Required]
public string Name { get; set; }
}
...そして、上の画像を作成するために使用されたビュー...
@model Mvc4TestApplication.ViewModels.MyViewModel
Name: @Model.Name
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.Name)
@Html.TextBoxFor(model => model.Name)
<input type="submit" value="Submit"/>
}
MVC ビューがモデル データを検出する方法を誤解しているようです。渡されたビュー モデルにフォーム コントロールをバインドするようビューに明示的に指示するために使用する代替構文はありますか?
ありがとう、
ティム。