控制器中不同参数设置的两个动作发生冲突

本文关键字:两个 冲突 参数 设置 控制器 | 更新日期: 2023-09-27 18:16:27

我有两个方法(动作)与不同的选项格式,但当我运行它,我被告知他们是模棱两可的。

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

控制器中不同参数设置的两个动作发生冲突

是。不能有多个同名的操作方法(&相同的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

考虑更改签名:

public ActionResult SelectInstitutionToEdit(){...}  

public ActionResult SelectInstitutionToEditWithString(string message){…}

虽然编译器会运行这段代码没有任何错误,因为方法重载,但MVC框架不允许它。但是您可以使用ActionName属性:

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

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

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

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