Html.EditorFor で ViewBag を使用すると問題が発生します。ビュー「Create.chtml」から「ID」という名前のフォームフィールドのデータをコントローラーに戻そうとしています。これにはViewBagを使用したいと思います。以下のビューで行ったように実行しようとすると、エラーがスローされます。
コンパイラ エラー メッセージ: CS1973: 'System.Web.Mvc.HtmlHelper' には 'EditorFor' という名前の適用可能なメソッドがありませんが、その名前の拡張メソッドがあるようです。拡張メソッドは動的にディスパッチできません。動的引数をキャストするか、拡張メソッド構文を使用せずに拡張メソッドを呼び出すことを検討してください。
どこが間違っているのか教えてください。
コントローラ:
[HttpPost]
public ActionResult Create(TABLE_CODES dc)
{
try
{
using (var db = new InpEntities())
{
TABLE_CODES codes = new TABLE_CODES(); //TABLE_CODES has data with various columns - ID, NAME, DATE, SOURCE etc.
ViewBag.keys = codes;
db.AddToTABLE_CODES(dc);
db.SaveChanges();
}
return RedirectToAction("Index");
catch
{
return View();
}
}
表示: Create.chtml
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">ID</div>
<div class="editor-field">
@Html.EditorFor(ViewBag.keys.ID) @****** THIS IS NOT WORKING ********@
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>