ASP.NET MVC 2 DisplayFor()

Zom*_*eep 2 c# asp.net-mvc asp.net-mvc-2

我正在看新版本的ASP.NET MVC(如果你还没有看到它,请参阅这里了解更多细节)我在显示对象内容时遇到了一些非常基本的麻烦.

在我的控制中,我有一个类型的对象Person,我将其传递给视图ViewData.Model.到目前为止一切都很好,我可以在视图中提取准备显示的对象.我没有得到的是,我需要调用Html.DisplayFor()方法以获取数据到屏幕.我试过以下......

<% 
    MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>
Run Code Online (Sandbox Code Playgroud)

但我收到以下消息:

CS0136:名为'p'的局部变量不能在此范围内声明,因为它会给'p'赋予不同的含义,'p'已在'父或当前'范围内用于表示其他内容

我知道这不是我应该做的 - 我知道重新定义变量会产生这个错误,但我不知道如何从控制器访问该对象.所以我的问题是,如何将对象传递给视图以显示其属性?

NB我应该补充说,我正在有限的业余时间阅读这篇文章,所以我完全有可能错过了一些基本的东西.

TIA

AAS*_*oft 6

Html.DisplayFor 只有在View类型为强类型时才能使用,并且它适用于传递给View的对象.

因此,对于您的情况,您必须使用Person类型作为其模型类型声明您的View(例如something.something.View<Person>)(抱歉,我不记得确切的名称,但这应该有意义),然后在调用时Html.DisplayFor(p => p),p将采取传递的模型(Person)值的值到视图中.

希望有道理.