Я ищу способ добиться следующего в MVC 3.
Допустим, у меня есть страница с одним вопросом.В сообщении я хотел бы привязать следующую ViewModel:
public class QuestionElementViewModel
{
public int QuestionId { get; set; }
public string Name { get ; set; }
public string Question { get; set; }
public string Feedback { get; set; }
}
Это легко сделать следующим образом (если я использую правильные имена в представлении):
[HttpPost]
public ActionResult Index(QuestionElementViewModel pm)
{
//Do something
}
Теперь у меня есть несколько вопросов на моей странице.Используя описанную здесь технику: http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx Я также могу сделать это довольно просто:
[HttpPost]
public ActionResult Index(QuestionElementViewModel[] pm)
{
//Do Something
}
Но допустим, у меня есть не только вопросы, но и разные элементы на моей странице, и эти элементы могутварьироваться.Возможно ли каким-то образом добиться чего-то подобного:
[HttpPost]
public ActionResult Index(IElementViewModel[] pm)
{
//Do Something
}
, где автоматически привязывается каждый ViewModel, реализующий этот интерфейс?
Я пробовал этот код, и он выдает ошибку: не удается создать экземпляр интерфейса, что звучит довольно очевидно.
Я думаю, мне следует создать пользовательский механизм связывания моделей, но я не очень знаком с этим и не хочу слишком сильно отходить от стандартной MVC-инфраструктуры ..