атрибут bind включает и исключает свойство с вложенными объектами сложного типа

StackOverflow https://stackoverflow.com/questions/8892550

Вопрос

Ладно, это странно.Я не могу использовать свойства BindAttribute и Include Exclude с вложенными объектами сложного типа в ASP.NET MVC.

Вот что я сделал:

<▪Model: общий

Действие HTTP POST:

общий

< sizesView: общий

Совершенно не работает.Могу ли я выполнить эту работу, только если я определю код BindAttribute для класса Enquiry, как указано здесь:

Как использовать [Bind(Include="")] для сложных вложенных объектов?

Это было полезно?

Решение

Да, вы можете заставить это работать вот так:

общий

и ваше действие:

общий

При этом в привязку будет включен только код EnquiryId, а код Latitude останется пустым.

При этом я бы не рекомендовал использовать атрибут Bind.Я рекомендую использовать модели просмотра.Внутри этих моделей представления вы включаете только те свойства, которые имеют смысл для этого конкретного представления.

Так что просто переадаптируйте свои модели представления:

общий

Вот и все.Больше не нужно беспокоиться о привязке.

Другие советы

ИМХО, есть способ лучше.

По сути, если у вас есть несколько моделей в модели представления, подпись пост-контроллера будет содержать те же модели, в отличие от модели представления.

И.Е.

общий

И действие публикации в контроллере будет выглядеть так.

общий

Пока вид все еще выглядит так

общий

Имейте в виду, что эта форма все равно отправит Локатор обратно (в том виде, в котором вы его настроили), однако, поскольку он не включен в строку Bind Include для запроса в действии публикации, действие не примет новое значение в результате запроса. Я бы посоветовал отключить широту или не использовать ее в качестве элемента формы, чтобы предотвратить публикацию дополнительных данных.

В любом другом сценарии вы можете без проблем использовать привязку, но по какой-то причине ему не нравится точечная нотация для сложных моделей.

В качестве побочного примечания я бы не стал добавлять атрибут bind в класс напрямую, поскольку он может вызвать другие проблемы, такие как репликация кода, и не учитывает определенные сценарии, в которых вы можете захотеть иметь другую привязку.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top