控制器中不同参数设置的两个动作发生冲突
本文关键字:两个 冲突 参数 设置 控制器 | 更新日期: 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/SelectInstitutionToEdit
和yourSite/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方法