我有以下课程:

class SomethingBase
{
    public string SharedProperty { get; set; }
}

class ChildClassOne : SomethingBase
{
    public string SpecificPropertyOne { get; set; }
}

class ChildClassTwo : SomethingBase
{
    public string SpecificPropertyTwo { get; set; }
}


我有ASP.NET MVC View,它具有两个HTML表单。这些形式调用相同的操作方法。
此操作方法应接收两个SomethingBase类派生类中的任何一个。
但是,如果我创建单个参数,例如SomethingBase param,则仅会收到SharedProperty。可以通过ASP.NET MVC的绑定机制来解释此行为。

为了使我的操作方法起作用,我创建了下一个定义:

public ActionResult(ChildClassOne param1, ChildClassTwo param2)


SharedProperty转到两个参数,但是特定属性仅针对对象(实际上是从视图传递)填充的。它有效,但我认为这不是唯一的解决方案。

是否有针对这种情况的最佳实践解决方案?

最佳答案

您应该为每个操作创建一个视图模型,因为它们并不相同。在这种情况下,实际上没有理由尝试使用基类。

10-06 07:36