我希望使用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()
这显示其他属性就好了,但不显示集合。如何显示该集合?我已经尝试并试图让它工作,因为我读过的所有内容似乎都说这应该像上面一样工作。
答案 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)