繁体   English   中英

ASP.NET MVC 2 DisplayFor()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM