带有ViewBag项的MVC 3剃须刀TextBoxFor会抛出错误?

时间:2011-05-18 12:48:19

标签: asp.net-mvc razor editorfor viewbag

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

第一个声明有效,但没有第二个声明:

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

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

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

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

1 个答案:

答案 0 :(得分:5)

TextBoxFor旨在用于强类型视图和视图模型。所以切断ViewData/ViewBag c..p并正确使用这些助手:

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

如果需要循环,请使用EditorTemplates:

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

并在相应的编辑器模板中:

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

不仅如此,我们现在拥有智能感知和强大的打字功能,但除此之外,代码还可以运行。

结论和我的2¢:不要在ASP.NET MVC中使用ViewBag / ViewData并且开心。