DisplayForModel不能正常工作mvc4

时间:2013-08-07 10:44:35

标签: asp.net-mvc-4

我的控制器:

public ViewResult Index()
    {
        return View("normal", PostalAddressRepo.All() as IEnumerable<PostalAddress>);
    }

normal.cshtml

@model IEnumerable<object>
@Html.DisplayForModel()

它不显示记录,只显示以下内容:

System.Data.Entity.DynamicProxies.ContactMechanism_4E4BC83827D1FE8C7CD34454310EF12DB90E894128F3024AEB8C7E9BF8843D2ASystem.Data.Entity.DynamicProxies.ContactMechanism_4E4BC83827D1FE8C7CD34454310EF12DB90E894128F3024AEB8C7E9BF8843D2A 

如果我使用以下内容,它可以正常工作:

@model IEnumerable<object>
@foreach (object obj in Model)
{
@Html.DisplayFor(m => obj)
}

不确定我在使用displayformodel()做错了什么。

有人可以建议吗?

2 个答案:

答案 0 :(得分:0)

在将模型传递给视图之前,请先尝试加载模型:

public ViewResult Index()
{
    var model = PostalAddressRepo.All() as IEnumerable<PostalAddress>;
    return View("normal", model.ToList());
}

同时使您的视图强类型与模型类型相同:

@model IEnumerable<PostalAddress>
@Html.DisplayForModel()

答案 1 :(得分:0)

这应该是因为DisplayForModel()尝试为PostalAddress对象中的每个属性类型检索最佳属性类型。

所以,因为它找不到最好的一个,我猜它会返回一个对象的字符串,显示

System.Data.Entity.DynamicProxies.ContactMechanism_4E4BC83827D1FE8C7CD34454310EF12DB90E894128F3024AEB8C7E9BF8843D2ASystem.Data.Entity.DynamicProxies.ContactMechanism_4E4BC83827D1FE8C7CD34454310EF12DB90E894128F3024AEB8C7E9BF8843D2A

如果可以,请强烈键入返回模型的视图:

@model IEnumerable<PostalAddress>
@Html.DisplayForModel()