атрибут bind включает и исключает свойство с вложенными объектами сложного типа
-
29-10-2019 - |
Вопрос
Ладно, это странно.Я не могу использовать свойства BindAttribute
и Include
Exclude
с вложенными объектами сложного типа в ASP.NET MVC.
Вот что я сделал:
<▪Model: общий
Действие HTTP POST:
общий< sizesView: общий
Совершенно не работает.Могу ли я выполнить эту работу, только если я определю код BindAttribute
для класса Enquiry
, как указано здесь:
Как использовать [Bind(Include="")] для сложных вложенных объектов?
Решение
Да, вы можете заставить это работать вот так:
общийи ваше действие:
общий При этом в привязку будет включен только код EnquiryId
, а код Latitude
останется пустым.
При этом я бы не рекомендовал использовать атрибут Bind.Я рекомендую использовать модели просмотра.Внутри этих моделей представления вы включаете только те свойства, которые имеют смысл для этого конкретного представления.
Так что просто переадаптируйте свои модели представления:
общийВот и все.Больше не нужно беспокоиться о привязке.
Другие советы
ИМХО, есть способ лучше.
По сути, если у вас есть несколько моделей в модели представления, подпись пост-контроллера будет содержать те же модели, в отличие от модели представления.
И.Е.
общийИ действие публикации в контроллере будет выглядеть так.
общийПока вид все еще выглядит так
общийИмейте в виду, что эта форма все равно отправит Локатор обратно (в том виде, в котором вы его настроили), однако, поскольку он не включен в строку Bind Include для запроса в действии публикации, действие не примет новое значение в результате запроса. Я бы посоветовал отключить широту или не использовать ее в качестве элемента формы, чтобы предотвратить публикацию дополнительных данных.
В любом другом сценарии вы можете без проблем использовать привязку, но по какой-то причине ему не нравится точечная нотация для сложных моделей.
В качестве побочного примечания я бы не стал добавлять атрибут bind в класс напрямую, поскольку он может вызвать другие проблемы, такие как репликация кода, и не учитывает определенные сценарии, в которых вы можете захотеть иметь другую привязку.
(Я изменил имена переменных для некоторой ясности. Я также знаю, что ваш вопрос довольно устаревший, однако в поисках ответа я впервые наткнулся на SO, на который я наткнулся, прежде чем попробовать свои собственные решения и перейти к тому, которое я опубликовал . Надеюсь, это поможет другим людям, ищущим решение той же проблемы.)