0

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

根据布拉德威尔逊的博客,这应该是不费吹灰之力。但是,它对我不起作用。

控制器:

 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()

这可以很好地显示其他属性,但不能显示集合。如何让集合显示?我已经尝试并试图让它工作,因为我读过的所有东西似乎都说这应该像上面那样工作。

4

2 回答 2

0

You can create a re-usable template that will display the fields.

Create a folder called: /Views/YourController/DisplayTemplates

If the template needs to be shared across controllers: /Views/Shared/DisplayTemplates

Create a view in the DisplayTemplates folder called Contact. In that view display the four fields:

@model WebApplication33.Models.Contact
@Html.DisplayFor(m => m.FirstName);
@Html.DisplayFor(m => m.LastName);
@Html.DisplayFor(m => m.Age)
@Html.DisplayFor(m => m.PhoneNumbers)
于 2014-03-19T17:08:59.230 回答
0

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

但是,通过为类联系人创建一个显示模板,我可以这样做:

 @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。

于 2014-03-19T17:03:28.430 回答