Использование данных модели в форме в частичном представлении

90
8

У меня есть следующий код в частичном представлении:

@model MyOrganization.MyApp.Models.ProductListing

@using (Ajax.BeginForm("TagProduct", new AjaxOptions() { UpdateTargetId = "FormContainer" , OnSuccess = "$.validator.unobtrusive.parse('form');" }))
{
<p>
@Html.LabelFor(m => m.ModelNumber):
@Html.EditorFor(m => m.ModelNumber)
<A href="javascript:$('form').submit()">Tag Product with This Model Number</A>
@(Html.ValidationMessageFor(m => m.ModelNumber))
</p>
}

Модель представления, которая получает это частичное представление, создается и многие ее свойства увлажняются видом, который содержит этот частичный вид. Однако, когда здесь вызывается submit, режим просмотра, который получает контроллер, имеет только свойство ModelNumber, увлажненное. Все остальные свойства имеют нулевое значение, как будто новый экземпляр создается частичным представлением только с измененным свойством (ModelNumber), получающим значение.

Я знаю, что экземпляр viewmodel, переданный частичному представлению, имеет все остальные значения свойств, потому что, если я добавлю @Html.EditorFor(m => m.SerialNumber), я могу увидеть значение SerialNumber, которое содержащее представление отобразилось в браузере текстовое поле, и я также верну его обратно в контроллер при отправке формы. Однако мне не нужен редактор для свойства SerialNumber в форме - я просто хочу, чтобы он вернулся в контроллер, когда он был отправлен.

Как я могу вернуть всю модель обратно контроллеру, поскольку он был передан частичному представлению только с изменениями, которые сделал частичный вид?

спросил(а) 2021-01-19T16:03:15+03:00 6 месяцев, 2 недели назад
1
Решение
117

Когда он публикует форму, она создает новую копию модели с любыми значениями, которые вы отправили на нее. Если вам нужны другие значения, поместите @Html.HiddenFor другие элементы, которые вам нужно отправить.

ответил(а) 2021-01-19T16:03:15+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема