1

尝试使用从 ViewBag 收到的数据在网页上打印出几种不同的表格。

第一个语句有效,但第二个无效:

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

我还尝试了以下(相同的错误消息):

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

第一个为 PItem 创建模型,第二个在我尝试为 PItem 内的 Text 项创建文本框时引发错误。是否可以使用 textboxfor helper 从 ViewBag 而不是模型中打印数据?

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 和强类型,除此之外,代码还可以工作。

Conclusion and my 2¢: don't use ViewBag/ViewData in ASP.NET MVC and be happy.

于 2011-05-18T12:49:54.073 回答