ASP.NET MVC: привязка сложного типа к выбору - PullRequest
19 голосов
/ 17 февраля 2009

Я пытаюсь выяснить, есть ли встроенная поддержка связывания сложных типов с элементами формы.

Чтобы использовать общую гипотетическую ситуацию: У меня есть объект Product, который принадлежит категории - модели выглядят примерно так:

public class Product
{
    public int ID { get; set; }
    public string Description { get; set; }
    public Category Category { get; set; }
}
public class Category
{
    public int ID { get; set; }
    public string Title { get; set; }
}

Создание формы для гидратации нового объекта, содержащего только простые типы значений, удобно и просто с помощью инфраструктуры ASP.Net MVC, например ::

.
public ActionResult Create(Product product);

Но как насчет приведенного выше сценария, в котором ваши сущности содержат другие сложные типы? Существуют ли встроенные механизмы для привязки IEnumerable <<i> T > к раскрывающемуся списку и последующего автоматического гидратации правильного T при отправке формы?

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

Ответы [ 3 ]

2 голосов
/ 17 февраля 2009

Я еще не пробовал DefaultModelBinder для сложных типов, но вы всегда можете использовать MvcContrib CastleBind (заимствованный из Castle Project ), который дает вам связывание сложных типов легко включая массивы.

См. http://blogger.forgottenskies.com/?p=258

2 голосов
/ 07 октября 2009

Пожалуйста, отметьте это , так как я думаю, что это говорит о вашем вопросе, кажется, что парни из S # arp решили его, и это легко "сорвать", если вы не используете их вещи.

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

1 голос
/ 17 февраля 2009

Самое близкое, что я думаю, это переопределение метода ToString() в классе для вывода значимой информации в DropDownList - но не более того.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...