Как использовать TextBoxFor для обновления многих сторон отношений - PullRequest
0 голосов
/ 12 июля 2010

Предположим, я перешел в модель представления с записью PERSON с несколькими адресами

Я ищу написать что-то вроде этого (упрощенно)

<% foreach (var addr in Model.PERSON.ADDRESSES) { %>
    <li>
        <%: Html.TextBoxFor(m => addr.Add1)%>
    </li>
<% } %>

Это выглядит так, как ожидается, однако каждое сгенерированное текстовое поле имеет одинаковые атрибуты ID и Name, и неудивительно, что код контроллера не может обновлять модель.

[HttpPost]
public ActionResult Edit(int id, FormCollection collection) 
{
    MyViewModel viewmodel = GenerateViewModel(id);
    try
    {
        UpdateModel(viewmodel);
        _MyRepository.Save();
        return View(viewmodel);
    }
    catch
    {
        return View(viewmodel);
    }
}

Полагаю, я поступаю неправильно: любые подсказки будут с благодарностью!

1 Ответ

0 голосов
/ 13 июля 2010

Вы можете использовать шаблоны редактора.

Контроллер:

public ActionResult Index()
{
    var model = new MyViewModel();
    model.PERSON = FetchPerson();
    return View(model);
}

[HttpPost]
public ActionResult Edit(MyViewModel model) 
{
    _MyRepository.Save(model);
    return View(model);
}

Просмотр:

<ul>
    <%: Html.EditorFor(x => x.PERSON.ADDRESSES) %>
</ul>

Шаблон редактора для адреса (~/Shared/Views/EditorTemplates/ADDRESS.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SomeNs.ADDRESS>" %>

<li>
    Street: <%: Html.EditorFor(x => x.Street) %>
</li>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...