Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC 2 DisplayFor()_C#_Asp.net Mvc_Asp.net Mvc 2 - Fatal编程技术网

C# ASP.NET MVC 2 DisplayFor()

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

我正在查看新版本的ASP.NET MVC(如果您还没有看到它,请参阅此处了解更多详细信息),我在显示对象的内容时遇到了一些非常基本的问题

在我的控件中,有一个类型为
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”已在“父或当前”作用域中用于表示其他内容

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

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


TIA

p已经是一个变量名;变量名在当前范围内必须是唯一的。因此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的文章;一些谷歌搜索对实际语法和其他方面有所帮助:)