EF でモデルを作成し、MVC でコントローラーとビューを作成しました。モデル タイプA
には、タイプするナビゲーション プロパティがありB
ます。だから私が作成するとき、私A
はを選択したいと思いますB
。
コントローラーを作成し、スカラー プロパティ用に作成されたフィールドのみを表示する MVC ウィザード。そこで、作成アクションをA
次のように変更しました。
public ActionResult Create() //Create action for A
{
List<B> b = db.B.ToList(); //db is my DataContext
ViewData["B"] = companies.Select(option => new SelectListItem
{
Text = (option.Name.ToString()),
Value = (option.Id.ToString())
});
return View();
}
そして私の見解に追加されました:
<div class="editor-label">
@Html.LabelFor(model => model.B)
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.B, (IEnumerable<SelectListItem>)ViewData["B"], "---- Select B ----")
@Html.ValidationMessageFor(model => model.B)
</div>
これまでのところすべて問題なく、HTML を取得できます
<select class="valid" id="B" name="B">
<option value="">---- Select B ----</option>
<option selected="selected" value="1">TestB</option>
</select>
ただし、送信するとエラーが発生します。
The value '1' is invalid.
検証を記述していないので、どこかで自動生成されたに違いありません。ViewData["B"] コレクション ID に対して値をチェックするように修正するにはどうすればよいですか?