Подтвердить что ты не робот

ASP.NET MVC: привязка сложного типа к выбору

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

Чтобы использовать общую гипотетическую ситуацию: У меня есть объект 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 < T > в раскрывающийся список, а затем автоматически увлажняет правильную T при отправке формы?

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

4b9b3361

Ответ 1

Смотрите здесь и здесь и здесь для получения подробной информации о привязке модели.

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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