2015-12-08 3 views
0

Я следую this примеру точно с незначительным изменением в моем ViewModelasp.net MVC полиморфная модель связывание

public abstract class BaseViewModel 
{ 
    public int Id { get; set; } 
} 

public class FooViewModel : BaseViewModel 
{ 
    public string Foo { get; set; } 
    public IEnumerable<string> Options { get; set; } 
} 

Как сделать IEnumerable свойства в приведенном выше примере работы?

+0

Что вы имеете в виду: как сделать работу? –

+0

Возможно, у вас есть опечатка, использующая 'IEnumerable ' вместо 'Ienumerable '. –

+0

В чем проблема при запуске потока кода? – user1672994

ответ

0

Судя по названию, я предполагаю, что ваш вопрос в том, как опубликовать Options, когда ваше действие принимает только BaseViewModel, т.е .:

public ActionResult Foo(BaseViewModel model) 
{ 
    // do something with `model.Options` 
} 

Если это так, то ответ вы не можете. Результатом сообщения является просто набор строк пары значений ключа. Модельному блоку задается задача взять эти данные и преобразовать его в параметр (ы), который принимает ваше действие, создавая экземпляры классов и устанавливая свойства соответствующим образом. Однако это не экстрасенс. Он нуждается в руководстве в форме ваших типов параметров действий. Учитывая, что на основе действия он собирается создать экземпляр BaseViewModel, а затем посмотреть, какие свойства он может заполнить. Он заполнит Id, но потом все будет готово. Он просто отбросит остальные опубликованные данные, потому что больше ничего не может сделать на BaseViewModel. Модельный блок не знает, что FooViewModel на самом деле то, что вы хотите. Если вам нужен экземпляр FooViewModel, вы должны ввести в него свой параметр действия. Ничто другое не сработает.

Смежные вопросы