Как получить данные формы HTML в частичном представлении для сериализации, если родительское представление имеет ту же модель? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть представление, которое содержит несколько частичных представлений с разными моделями, за исключением одной, которая имеет ту же модель, что и родительское представление. Причина в том, что родительское представление представляет риск, а частичное представление загружается в зависимости от того, является ли риск «моторным» или «немоторным». Частичные представления как двигателя, так и немотора используют ту же модель, что и в родительском представлении риска.

Я использую метод Html .BeginCollectionItem и сериализирую данные формы при отправке, чтобы получить указанные данные в том же классе, который использовался для модели родительского представления (Risk). Представлению удается собрать все данные, кроме тех, которые найдены в частичном представлении Motor и Non-Motor. Цель состояла в том, чтобы данные в частичных видах двигателя / немотора были сериализованы в том же объекте, что и модель риска в родительском представлении, однако при отладке метода получения все атрибуты, собранные в частичных представлениях, либо равны нулю или 0, хотя значения фактически были введены в форму.

Как получить в элементе Risk все данные, а не только данные, введенные за пределами частичных представлений?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Итак, я нашел решение, которое работает. Оказывается, когда данные были сериализованы, атрибуты риска двигателя были сериализованы на уровне root объекта. Так что, хотя он должен был быть сериализован, например, как Policy.Policy_Risk.risk_item_no, он был сериализирован только как risk_item_no, что конфликтует с объектом Policy, который я получаю в контроллере.

Я исправил это, добавив атрибут имени к каждому элементу в форме следующим образом: @ name = "Policy_Risk" + unique_id + ".risk_item_no"

Это сработало, спасибо за все равно помогите.

0 голосов
/ 04 февраля 2020

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

Из того, что я могу собрать:

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

Без понимания бизнес-контекста, почему вы разрабатываете приложение таким образом, вот мои предложения:

  1. Создайте класс ViewModel, который имеет свойство типа Risk class, свойство типа Risk (для вашего ParticalView для двигателя) и свойство типа Risk (для вашего частичного View для двигателя).
  2. Или, если вам нужно отправить только определенные c разделы (например, один частичный вид, отображаемый на родительском элементе Представление), вы можете обернуть этот частичный вид в другой элемент формы (например, @ Html .BeginForm {} или @ Ajax .BeginForm {}) и отправлять их отдельно.
...