То, что у меня есть, - это модель, у которой один из ее атрибутов динамический. Этот динамический атрибут содержит один из 50 различных объектов. Эта модель отправляется в представление, которое динамически создает страницу на основе того, какой объект используется. Это работает отлично ... проблема заключается в обратной передаче. Когда модель отправляет обратно, связыватель модели не может связать динамический атрибут. Я ожидал этого и думал, что смогу справиться с этим, но ничего из того, что я пробовал, работает, кроме выполнения действий для КАЖДОГО различных объектов.
Модель
public class VM_List
{
public Config.CIType CIType { get; set; }
public dynamic SearchData { get; set; }
//Lots of static fields
}
Это работает
public ActionResult List_Person(VM_List Model, VM_Person_List SearchData)
{
Model.SearchData = SearchData;
//Stuff
}
public ActionResult List_Car(VM_List Model, VM_Car_List SearchData)
{
Model.SearchData = SearchData;
//Stuff
}
Но я хочу одно действие
public ActionResult List(VM_List Model)
{
//Stuff
}
Я пробовал такие вещи, как
public ActionResult List(VM_List Model)
{
switch (Model.CIType)
{
case Config.CIType.Person:
UpdateModel((VM_Person_List)Model.SearchData);
break;
default:
SearchData = null;
break;
}
//Stuff
}
и пользовательское связующее для моделей
CIType CIType = (CIType)bindingContext.ValueProvider.GetValue("CIType").ConvertTo(typeof(CIType));
switch (CIType)
{
case Config.CIType.Person:
SearchData = (VM_Person_List)bindingContext.ValueProvider.GetValue("SearchData").ConvertTo(typeof(VM_Person_List));
break;
default:
SearchData = null;
break;
}
но я не могу заставить либо работать. Есть идеи?