C# ASP.NET MVC 2 DisplayFor()
我正在查看新版本的ASP.NET MVC(如果您还没有看到它,请参阅此处了解更多详细信息),我在显示对象的内容时遇到了一些非常基本的问题 在我的控件中,有一个类型为C# ASP.NET MVC 2 DisplayFor(),c#,asp.net-mvc,asp.net-mvc-2,C#,Asp.net Mvc,Asp.net Mvc 2,我正在查看新版本的ASP.NET MVC(如果您还没有看到它,请参阅此处了解更多详细信息),我在显示对象的内容时遇到了一些非常基本的问题 在我的控件中,有一个类型为Person的对象,我正在将其传递到ViewData.Model中的视图。到目前为止一切都很好,我可以在视图中提取对象以供显示。但我不明白的是,我需要如何调用Html.DisplayFor()方法才能将数据显示到屏幕上。我试过以下方法 <% MVC2test.Models.Person p = ViewData.Mod
Person
的对象,我正在将其传递到ViewData.Model
中的视图。到目前为止一切都很好,我可以在视图中提取对象以供显示。但我不明白的是,我需要如何调用Html.DisplayFor()
方法才能将数据显示到屏幕上。我试过以下方法
<%
MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>
//剪断
p) %%>
但我得到了以下信息:
CS0136:无法在此作用域中声明名为“p”的局部变量,因为它将赋予“p”不同的含义,而“p”已在“父或当前”作用域中用于表示其他内容
我知道这不是我应该做的-我知道重新定义变量会产生这个错误,但我不知道如何从控制器访问对象。所以我的问题是,如何将对象传递给视图以显示其属性
注意:我应该补充一点,我是在有限的业余时间里阅读这篇文章的,所以我完全有可能错过了一些基本的东西
TIAp已经是一个变量名;变量名在当前范围内必须是唯一的。因此displayFor(p=>p)无效,因为您在那里声明了一个新变量“p”。这样编译器就不知道是使用Person p还是(p=>)变量 因此,只需将其重命名为
<%= Html.DisplayFor(person => person) %>
person)%>
Html.DisplayFor
仅当视图是强类型的,并且它对传递给视图的对象有效时才能使用
因此,对于您的情况,您必须以Person类型作为其模型类型来声明视图(例如,something.something.View
)(对不起,我不记得确切的名称,但这应该是有意义的),然后在调用Html.DisplayFor(p=>p)
时,p
将获取传递的模型(Person)的值在视图中输入值
希望这是有意义的。谢谢你的回答,但我真正想要的是如何在DisplayFor方法中访问我传入ViewData.Model视图的对象。重新定义为一个新变量并不能达到这个目标。谢谢。我明天回到办公室后会试一试。:)回答得很好。谢谢,它成功了(但你已经知道了,不是吗?;)事实上,我没有。嗯,不完全是这样。我目前正在学习ASP.NET MVC 1.0,但我读了一些关于2.0的文章,还记得读了一些关于Html.DisplayFor的文章;一些谷歌搜索对实际语法和其他方面有所帮助:)