Pat*_*ick 1 asp.net-mvc editorfor razor viewbag
尝试使用从ViewBag收到的数据在网页上打印出几种不同的表单.
第一个声明有效,但没有第二个:
@Html.EditorForModel(ViewBag.PI as PItem)
@Html.TextBoxFor(x => (ViewBag.PI as PItem).Text)
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下(相同的错误消息):
@Html.TextBoxFor(x => ViewBag.PI.Text)
Run Code Online (Sandbox Code Playgroud)
第一个为PItem创建模型,第二个在我尝试为PItem中的Text项创建文本框时抛出错误.是否可以使用textbox for helper打印ViewBag中的数据而不是模型中的数据?
TextBoxFor
旨在与强类型视图和视图模型一起使用.所以切断ViewData/ViewBag
c..p并正确使用这些助手:
@model MyViewModel
@Html.TextBoxFor(x => x.Text)
Run Code Online (Sandbox Code Playgroud)
如果需要循环,请使用EditorTemplates:
@model IEnumerable<MyViewModel>
@Html.EditorForModel()
Run Code Online (Sandbox Code Playgroud)
在相应的编辑器模板中:
@model MyViewModel
<div>@Html.TextBoxFor(x => x.Text)</div>
Run Code Online (Sandbox Code Playgroud)
不仅如此,我们现在拥有IntelliSense和强类型,但除此之外,代码也可以运行.
结论和我的2¢:不要在ASP.NET MVC中使用ViewBag/ViewData并且要开心.