【问题标题】:Can we overload MVC controller action methods? [duplicate]我们可以重载 MVC 控制器操作方法吗? [复制]
【发布时间】:2015-12-06 17:44:13
【问题描述】:

我试图重载控制器方法或动作我能够编写控制器动作并编译但我仍然没有得到结果。

   public ActionResult Contact()
    {
        ViewBag.Message = "Your contact page.";

        return View();
    }
    public ActionResult Contact(string str)
    {
        ViewBag.Message = "Your contact page by overloaded method";

        return View();
    }

但我仍然收到以下错误 “/”应用程序中的服务器错误

【问题讨论】:

  • 因为两者都是同一个动作的[HttpGet],所以只有在HTTP动词不同的情况下才可以重载同名,否则使用不同的名字。正如thangadurai所建议的那样,动作名称属性也将很有帮助
  • 不,你不能。但是你可以使用 ActionName 属性来模拟它。

标签: c# asp.net-mvc oop


【解决方案1】:

您会遇到冲突,因为 string 可以为空。

您可以使用[ActionName("NewActionName")] 来提供不同的操作名称,方法名称保持不变。

如果您有其他类似的操作方法,则不应发生冲突

public ActionResult Contact(int Value)

但是,下面的操作会再次失败

public ActionResult Contact(int? Value)

原因很明显。该参数再次可以为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2018-10-14
    • 2014-10-22
    • 2011-10-05
    • 1970-01-01
    • 2015-11-30
    • 2010-10-01
    相关资源
    最近更新 更多