[英]ASP.NET MVC 2 DisplayFor()
我正在查看ASP.NET MVC的新版本(如果您还没有看到它,请参见此处以了解更多详细信息),并且在显示对象内容时遇到一些非常基本的麻烦。
在我的控件中,我有一个类型为Person
的对象,该对象将传递给ViewData.Model
的视图。 到目前为止一切都很好,我可以在视图中提取对象以准备显示。 不过,我没有得到的是如何调用Html.DisplayFor()
方法才能将数据显示到屏幕上。 我尝试了以下方法...
<%
MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>
但我收到以下消息:
CS0136:无法在此范围内声明名为“ p”的局部变量,因为它将赋予“ p”不同的含义,“ p”已在“父级或当前”范围中用于表示其他内容
我知道这不是我应该做的-我知道重新定义变量会产生此错误,但是我不知道如何从控制器访问对象。 所以我的问题是,如何将对象传递给视图以显示其属性?
注意:我还要补充一点,我会在有限的业余时间里阅读这些内容,因此我完全有可能错过了一些基本知识。
TIA
Html.DisplayFor
仅在您的View是强类型的,并且对传递给View的对象起作用Html.DisplayFor
可以使用。
因此,对于您的情况,您必须声明类型为Person的View作为其Model类型(例如, something.something.View<Person>
)(对不起,我不记得确切的名称,但这应该是有道理的),然后在调用Html.DisplayFor(p => p)
, p
会将传入的模型(Person)值的值带入视图。
希望有道理。
p已经是一个变量名; 并且变量名称在当前范围内必须唯一。 因此displayFor(p => p)无效,因为您在此处声明了新变量'p'。 这样,编译器就不知道是否要使用您的Person p或(p =>)变量。
因此,只需将其重命名为
<%= Html.DisplayFor(person => person) %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.