У меня есть частичное представление, в котором есть viewmodel, содержащая форму с только адресом электронной почты и именем. Я отправляю эти данные с помощью jquery ajax на мой контроллер, чтобы выполнить некоторую проверку. Мой контроллер метод PartialViewResult см:Публикация динамически добавленных элементов списка контроллеру
[HttpPost]
public PartialViewResult InviteUser(InviteEmailViewModel item)
{
return PartialView("_InvitedUsers", item);
}
Мой JQuery добавляет результат этого метода к DOM, так как ив использует hiddenfor я получаю входы, как:
<input data-val="true" data-val-required="Name is required." id="Name" name="Name" type="hidden" value="test">
<input data-val="true" data-val-regex="Invalid Email Address" data-val-regex-pattern="^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9][email protected]((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$" data-val-required="Email Address is required." id="Email" name="Email" type="hidden" value="[email protected]">
Проблема с этим состоит в том, что мой ViewModel содержит список, но после отправки формы с добавленными частичными просмотрами List имеет значение Null. Ive тестировался с жестко закодированными полями ввода, такими как:
<input data-val="true" data-val-required="Name is required." id="Name" name="InviteEmailViewModel[0].Name" type="hidden" value="test">
и это действительно работает. Как заставить MVC генерировать скрытые поля, как в моем жестком кодексе?
Спасибо, BeginCollectionItem был трюком.Я установил его и на самом деле не должен был ничего изменять, кроме добавления «@using (Html.BeginCollectionItem (« InviteEmailAddresses »))» к моему частичному представлению. – blaataap
Отлично, рад, что это помогло. – PurpleSmurph