我有以下类(class):
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 的绑定(bind)机制来解释。
为了使我的操作方法起作用,我创建了下一个定义:
public ActionResult(ChildClassOne param1, ChildClassTwo param2)
SharedProperty
到两个参数,但特定属性只填充对象,实际上是从 View 传递的。它有效,但我认为这不是唯一的解决方案。
对于这种情况是否有一些最佳实践解决方案?
最佳答案
您应该为每个 Action 创建一个 View 模型,因为它们并不相似。在这种情况下,真的没有理由尝试使用基类。
关于c# - Action 方法参数的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519252/