我目前有一个包含object
属性的模型,该属性可以是int
,string
或MyClass
对象(包含3-4个属性)在运行时。这是我模型的总体思路:
public class MyModel
{
// Can be int, string, or MyClass during runtime.
public object Value { get; set; }
}
这是MyClass的基本概念:
public class MyClass
{
// These are correctly displayed in the EditorFor template.
public int Quantity { get; set; }
public string Name { get; set; }
public bool IsAvailable { get; set; }
}
我认为我有一个EditorFor(m => m.Value)
,可以根据其运行时类型正确选择一个模板。
在POST期间,视图中的数据已正确绑定到模型并作为参数发送回控制器,但前提是它是string
或int
。实际上,当Value
是MyClass
对象时,它似乎是完全空的,就好像它是从“ = new Object();
”语句中出来的一样。我无法对其进行检查,如下所示:
我怀疑这种行为是因为在POST中,Value
对象是使用空的构造函数重新创建的,而未指定其运行时类型,因此,绑定发生时,属性与普通的{{1 }}对象。
在这种情况下,如何在重新创建对象时指定对象的运行时类型?如果没有,我该如何解决此绑定问题?
其他信息:在控制器POST期间,可以通过System.Object
访问MyClass
属性(例如,Request
将从视图中返回正确的int值)。他们似乎无法进入模型。
编辑:根据要求,这是我的视图:
Request["MyModel.Quantity"]