MVC 3剃须刀TextBoxFor with ViewBag项目会引发错误?
问题描述:
尝试使用我从ViewBag收到的数据在网页上打印出几种不同的表单。MVC 3剃须刀TextBoxFor with ViewBag项目会引发错误?
第一条语句的作品,但没有第二:
@Html.EditorForModel(ViewBag.PI as PItem)
@Html.TextBoxFor(x => (ViewBag.PI as PItem).Text)
我也试过以下(同样的错误消息):
@Html.TextBoxFor(x => ViewBag.PI.Text)
第一个创建的PItem和第二模型当我尝试为PItem中的文本项目创建文本框时抛出错误。是否可以使用textboxfor helper从ViewBag而不是从模型打印数据?
答
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并且很高兴。
好的,所以,而不是使用ViewBag我应该发送模型中的数据。但是,我如何将模型数据传递给布局页面?因为我想呈现布局页面内的一种形式。 – Patrick 2011-05-18 14:30:05
@帕特里克,你可以使用子动作和[Html.Action]助手(http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx)。 – 2011-05-18 15:48:00
有没有例子吗?我的问题是,我可以从布局访问ViewBag,但不能访问模型。如果我然后将关于我们的搜索的信息添加到模型中,那么我无法在布局中呈现它。 – Patrick 2011-05-19 08:00:57