如何在POST操作期间从模型的System.Object属性检索数据?

时间:2018-07-30 20:31:49

标签: c# asp.net-mvc

我目前有一个包含object属性的模型,该属性可以是intstringMyClass对象(包含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期间,视图中的数据已正确绑定到模型并作为参数发送回控制器,但前提是它是stringint。实际上,当ValueMyClass对象时,它似乎是完全空的,就好像它是从“ = new Object();”语句中出来的一样。我无法对其进行检查,如下所示:

Inspecting Value

我怀疑这种行为是因为在POST中,Value对象是使用空的构造函数重新创建的,而未指定其运行时类型,因此,绑定发生时,属性与普通的{{1 }}对象。

在这种情况下,如何在重新创建对象时指定对象的运行时类型?如果没有,我该如何解决此绑定问题?

其他信息:在控制器POST期间,可以通过System.Object访问MyClass属性(例如,Request将从视图中返回正确的int值)。他们似乎无法进入模型。

编辑:根据要求,这是我的视图:

Request["MyModel.Quantity"]

0 个答案:

没有答案