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

Two Actions in Controler with Different Parameter Settings Conflict

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

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

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

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

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(字符串消息){...}

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

public ActionResult SelectInstitutionToEdit(){...}

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

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

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

}

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