Потеря данных на посту при использовании EditorFor - PullRequest
1 голос
/ 13 апреля 2011

Проблема:

Когда я отправляю форму, я теряю любую информацию, введенную в шаблоны редактирования для адресов.

У меня есть следующая модель:

public class MoveRecord
{
    public Address StartPoint { get; set; }
    public Address EndPoint { get; set; }
}

Где адрес определяется как:

public class Address
{
    public String City { get; set;}
    public String State { get; set; }
    public String Line1{ get; set; }
    public String PostalCode { get; set; }
}

Вот мой метод действия:

[HttpPost]
public ActionResult Edit(MoveRecord model)
{
    if (ModelState.IsValid)
    {
        //Save info
    }

    return View(model);
}

Мое представление редактирования использует:

using (Html.BeginForm("Edit", "Move", FormMethod.Post))
{
    @Html.EditorFor(m => m.StartPoint);
    @Html.EditorFor(m => m.EndPoint);
    <input type="submit" value="Save" />
}

Мой шаблон редактирования:

<table class="form address">
    <tbody>
        <tr>
            <th style="width: 200px;">
                @Html.LabelFor(m => m.Line1):
            </th>
            <td>
                @Html.TextBoxFor(m => m.Line1, new { style = "width: 300px;" })
            </td>
        </tr>
        <tr id="zip">
            <th>
                @Html.LabelFor(m => m.PostalCode):
            </th>
            <td>
                @Html.TextBoxFor(m => m.PostalCode, new { style = "width: 150px;" })
            </td>
        </tr>
        <tr id="city">
            <th>
                @Html.LabelFor(m => m.City):
            </th>
            <td>
                @Html.TextBoxFor(m => m.City, new { style = "width: 150px;" })
            </td>
        </tr>
        <tr id="state">
            <th>
                @Html.LabelFor(m => m.StateProvince):
            </th>
            <td> 
               @Html.TextBoxFor(m => m.StateProvince, new { style = "width: 150px;" })
            </td>
        </tr>
    </tbody>
</table>

Все отображается очень хорошо, однако, когда я отправляю форму, модель, которую я получаю в методе действия, не содержит никакой информации, введенной в поле адреса. Если я перевожу все в одно и то же представление, то все будет работать нормально, но я хотел бы иметь возможность использовать шаблоны редактора, чтобы облегчить чтение моих представлений. Как я могу получить данные из шаблона редактора, правильно привязанные к модели?

Редактировать: Опубликовал мой метод действия

1 Ответ

0 голосов
/ 13 апреля 2011

Действие, на которое вы отправляете форму, должно выглядеть следующим образом:

[HttpPost]
public ActionResult Edit(MoveRecord model)
{
    // model.StartPoint and model.EndPoint should be correctly bound here.
    ...
}

Или, если вы пытаетесь связать напрямую с двумя адресами, вам нужно установить правильный префикс:

[HttpPost]
public ActionResult Edit(
    [Bind(Prefix = "StartPoint")] Address start, 
    [Bind(Prefix = "EndPoint")] Address end
)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...