2

我正在查看新版本的 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”赋予不同的含义,后者已在“父或当前”范围中用于表示其他内容

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

注意我应该补充一点,我在有限的业余时间阅读这个,所以我完全有可能错过了一些基本的东西。

TIA

4

2 回答 2

6

Html.DisplayFor仅当您的视图是强类型时才能使用,并且它适用于传递给视图的对象。

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

希望这是有道理的。

于 2009-09-23T15:49:59.077 回答
1

p 已经是一个变量名;并且变量名称在当前范围内必须是唯一的。因此 displayFor(p=>p) 无效,因为您在那里声明了一个新变量“p”。这样编译器就不知道是使用您的 Person p 还是 (p =>) 变量。

所以只需将其重命名为

<%= Html.DisplayFor(person => person) %>
于 2009-09-23T15:14:20.800 回答