c# - Action 方法参数的继承

标签 c# asp.net-mvc model-binding

我有以下类(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/

相关文章:

jquery - 如何将 ajax 调用中的多个参数传递给 MVC Controller

ASP.NET-MVC2 : Why does TryUpdateModel ignore properties after the second level of the object model tree?

c# - AffectedRows 在 FormView 的 ItemInserted 中总是 -1

c# - 如何查看网络连接是否更改状态?

c# - 如何将列表转换为 C# 中的 observablecollection?

jquery - 对象不支持属性或方法 'valid'

asp.net-mvc - 为 Html.DropDownListFor 分配 ID

asp.net-mvc - 如何防止 "Swapping"或 "Staged"Azure 网站注销用户?

c# - 比较 XML 节点的高效算法

C# - winform - 如何在 app.config 中加密端点地址