我期待在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”,这已经是一个“父母或电流”范围用来表示别的东西。

我知道这是不是我应该做的事情 - 我知道,重新定义一个变量会产生这个错误,但我不知道如何从控制器访问对象。所以我的问题是,如何通过所述对象到所述视图,以显示其属性?

N.B。我要补充一点,我对这个在我有限的业余时间阅读了,所以这是完全有可能我已经错过了一些基本的东西。

TIA

有帮助吗?

解决方案

Html.DisplayFor可以用来只有当你的看法是强类型的,和它的作品传递给视图对象。

所以,你的情况,你必须与该类型的人作为它的型号类型(例如something.something.View<Person>)(对不起,我不记得确切的名字,但是这应该是有意义)打电话时,声明你的视图,然后Html.DisplayFor(p => p)p将采取传递模型(人)值的值到视图中。

希望有所是有意义的。

其他提示

p是已经变量名;和变量名称必须是在当前整个范围内是唯一。因此displayFor(P => P)是无效的,因为你宣布一个新的变量“P”在那里。这样,编译器不知道阉羊使用您的人员P,或第(p =>)变量。

因此,只要其重命名为

<%= Html.DisplayFor(person => person) %>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top