我有以下课程:
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
转到两个参数,但是特定属性仅针对对象(实际上是从视图传递)填充的。它有效,但我认为这不是唯一的解决方案。是否有针对这种情况的最佳实践解决方案?
最佳答案
您应该为每个操作创建一个视图模型,因为它们并不相同。在这种情况下,实际上没有理由尝试使用基类。