【问题标题】:Two Actions in Controler with Different Parameter Settings Conflict不同参数设置的控制器中的两个动作冲突
【发布时间】:2016-11-04 19:13:38
【问题描述】:

我有两种具有不同选项格式的方法(操作),但是当我运行它时,我被告知它们是模棱两可的。方法如下所示。

public ActionResult SelectInstitutionToEdit(){...}
public ActionResult SelectInstitutionToEdit(string message){...}

【问题讨论】:

标签: c# asp.net-mvc controller actionmethod


【解决方案1】:

是的。您不能有多个具有相同名称(和相同 http 动词)的操作方法。

如果您希望两者都适用于 Http GET 请求,您可以保留第二个,并检查您的 message 参数的值并根据该值返回相关响应。

public ActionResult SelectInstitutionToEdit(string message)
{
  if(String.IsNullOrEmpty(message))
  {
    // to do :Return something
  }
  // to do :Return something
}

这适用于yourSite/yourController/SelectInstitutionToEdityourSite/yourController/SelectInstitutionToEdit?message=hello

【讨论】:

    【解决方案2】:

    考虑更改您的签名:

    public ActionResult SelectInstitutionToEdit(){...}  
    

    public ActionResult SelectInstitutionToEditWithString(string message){...}

    【讨论】:

      【解决方案3】:

      尽管由于方法重载,编译器会运行此代码而不会出现任何错误,但 MVC 框架不允许这样做。但是你可以使用ActionName属性:

      public ActionResult SelectInstitutionToEdit(){...}
      
      [ActionName("SelectInstitutionToEditWithParams")]
      public ActionResult SelectInstitutionToEdit(string message){...}
      

      那么你应该用它的新名字来称呼它。像这样:

      @using (Html.BeginForm("SelectInstitutionToEditWithParams", "yourController"))
      {
      
      }
      

      【讨论】:

        【解决方案4】:

        如果重载的 Action 方法是相同的 get/post 调用,则使用 [ActionName("SomeOtherName")]

        【讨论】:

          猜你喜欢
          • 2017-03-12
          • 1970-01-01
          • 2020-01-22
          • 2014-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-26
          相关资源
          最近更新 更多