1

ViewBag から受け取ったデータを使用して、Web ページにいくつかの異なるフォームを印刷しようとしています。

最初のステートメントは機能しますが、2 番目のステートメントは機能しません。

@Html.EditorForModel(ViewBag.PI as PItem)
@Html.TextBoxFor(x => (ViewBag.PI as PItem).Text)

次のことも試しました(同じエラーメッセージ):

@Html.TextBoxFor(x => ViewBag.PI.Text)

最初のものは PItem のモデルを作成し、2 つ目は PItem 内のテキスト アイテムのテキスト ボックスを作成しようとするとエラーをスローします。モデルからではなく、ViewBag からデータを出力するために textboxfor ヘルパーを使用することは可能ですか?

4

1 に答える 1

5

TextBoxFor厳密に型指定されたビューとビュー モデルで使用することを目的としています。したがって、ViewData/ViewBagc..p を切り取り、それらのヘルパーを正しく使用します。

@model MyViewModel
@Html.TextBoxFor(x => x.Text)

ループする必要がある場合は、EditorTemplates を使用します。

@model IEnumerable<MyViewModel>
@Html.EditorForModel()

および対応するエディター テンプレート内:

@model MyViewModel
<div>@Html.TextBoxFor(x => x.Text)</div>

それだけでなく、IntelliSense と強力な型付けが利用できるようになりましたが、これに加えてコードが機能します。

結論と私の 2¢: ASP.NET MVC で ViewBag/ViewData を使用しないでください。

于 2011-05-18T12:49:54.073 に答える