«вложенные» формы в MVC - PullRequest
3 голосов
/ 27 марта 2012

Я понимаю, что вложенные теги <form> недопустимы, но я хотел бы добиться аналогичной функциональности.

У меня есть форма, используемая для создания профиля пользователя, и в этой форме я бы хотел, чтобы пользователь мог указать одну или несколько школ, которые он посещал.

В моей текущей настройке (ниже) я могу подать только одну школу на форму. Я убрал валидацию и ярлыки с моей точки зрения, чтобы упростить проблему.

Вид:

<% using (Html.BeginForm())
   { %>
<div>
    <fieldset>
        <legend>Basic Information</legend>
        <%: Html.EditorFor(m => m.Name) %>
        <!-- more input fields-->
    </fieldset>
    <fieldset>
        <legend>Schools</legend>
        <%: Html.EditorFor(m => m.SchoolName) %>
        <!-- more input fields -->
    </fieldset>
    <p>
        <input type="submit" value="Create" />
    </p>
</div>
<% } %>

Это представление строго типизировано в ProfileViewModel, которое содержит все поля свойств. Мой контроллер содержит очень простое действие Create, которое сохраняет входные данные в базу данных. Это отлично работает.

То, что я хотел бы сделать, это разрешить пользователю добавлять несколько школ, используя эту форму. В asp.net я бы использовал UpdatePanel для достижения того, чего я хочу, но все, что я прочитал, говорит о том, что в MVC стандартом является использование вызовов PartialView и jQuery / ajax.

  1. Если бы я включил раздел «Школы» своей формы в PartialView, как мне получить этот PartialView, вложенный в другую форму, для «отправки» и «обновления», не затрагивая основной вид?
  2. Как мне изменить модели моего представления, чтобы отразить это? Должен ли я сохранить List<School> в ProfileViewModel, который содержит все добавленные школы, или есть лучший способ? Должен ли я передавать SchoolViewModel в PartialView?

1 Ответ

1 голос
/ 27 марта 2012

Вы можете взглянуть на следующую статью .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...