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

时间:2016-11-04 19:13:38

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

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

考虑更改签名:

public ActionResult SelectInstitutionToEdit(){...}  

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

答案 2 :(得分:1)

虽然由于方法重载,编译器将运行此代码而没有任何错误,但MVC框架不允许它。但您可以使用ActionName属性:

public ActionResult SelectInstitutionToEdit(){...}

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

然后你应该用它的新名称来调用它。像这样:

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

}

答案 3 :(得分:1)

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