Как привязать коллекцию (IEnumerable) к настраиваемому типу?

У меня есть следующее действие для отображения формы с 3 элементами:

[HttpGet]
    public ActionResult ReferAFriend()
    {
        List<ReferAFriendModel> friends = new List<ReferAFriendModel>();
        ReferAFriendModel f1 = new ReferAFriendModel();
        ReferAFriendModel f2 = new ReferAFriendModel();
        ReferAFriendModel f3 = new ReferAFriendModel();

        friends.Add(f1);
        friends.Add(f2);
        friends.Add(f3);
        return View(friends);
    }

, а затем действие публикации

[HttpPost]
    public ActionResult ReferAFriend(IEnumerable<ReferAFriendModel> friends)
    {
        if(ModelState.IsValid){

EDIT Мой вид выглядит так:

@model IEnumerable<Models.ReferAFriendModel>
@for(int i=0;i<Model.Count();i++)
    {
        @Html.Partial("_ReferAFriend", Model.ElementAt(i));
    }

Частичный вид выглядит следующим образом:

@model Models.ReferAFriendModel
<p>
   @Html.LabelFor(i => i.FullName) @Html.TextBoxFor(i => i.FullName)<br />
   @Html.LabelFor(i => i.EmailAddress) @Html.TextBoxFor(i => i.EmailAddress)
   @Html.HiddenFor(i=>i.Id)
</p>

Когда я публикую, я вижу, что поля размещены в объекте Request.Form, например Request.Form ["FullName"] покажет: "Дэвид Бекхэм", "Тьерри Анри" . «Чичарито Фергурсон», которые я ввел в форму. Но в действии «Опубликовать» значение «друзья» всегда равно нулю. Модель ReferAFriendModel имеет три открытых свойства: Id, EmailAddress и FullName.

Что я делаю не так?

7
задан abatishchev 27 August 2016 в 20:13
поделиться