为什么不使用EditorForModel()显示集合

时间:2014-03-19 16:44:26

标签: asp.net-mvc asp.net-mvc-5.1

我希望使用EditorForModel()显示一个集合。

根据这个Blog from Brad Wilson,这应该是没有道理的。但是,它对我不起作用。

控制器:

 public ActionResult Index() {

        var contact = new Contact() { FirstName = "Greg", LastName = "Gum", Age = 27 };
        contact.PhoneNumbers = new List<string>();
        contact.PhoneNumbers.Add("111");
        contact.PhoneNumbers.Add("222");
        return View(contact);
    }

班级:

public class Contact
{

    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }

    public List<String> PhoneNumbers { get; set; } 

}     

观点:

@model WebApplication33.Models.Contact

@Html.DisplayForModel()

这显示其他属性就好了,但不显示集合。如何显示该集合?我已经尝试并试图让它工作,因为我读过的所有内容似乎都说这应该像上面一样工作。

2 个答案:

答案 0 :(得分:0)

似乎不支持开箱即用,如上例所示。

但是,通过为类Contact创建显示模板,我可以这样做:

 @model WebApplication33.Models.Contact
 @Html.DisplayFor(m => m.FirstName);
 @Html.DisplayFor(m => m.LastName);
 @Html.DisplayFor(m => m.Age)
 @Html.DisplayFor(m => m.PhoneNumbers)

请注意,我没有使用foreach。

答案 1 :(得分:0)

您可以创建一个可重复使用的模板来显示字段。

创建一个名为:/ Views / YourController / DisplayTemplates

的文件夹

如果需要跨控制器共享模板:/ Views / Shared / DisplayTemplates

在名为Contact的DisplayTemplates文件夹中创建一个视图。在该视图中显示四个字段:

@model WebApplication33.Models.Contact
@Html.DisplayFor(m => m.FirstName);
@Html.DisplayFor(m => m.LastName);
@Html.DisplayFor(m => m.Age)
@Html.DisplayFor(m => m.PhoneNumbers)