参数设置不同的控制器中的两个动作冲突
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/SelectInstitutionToEdit
和 yourSite/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")]
。
我有两种具有不同选项格式的方法(操作),但是当我 运行 它时,我被告知它们不明确。方法如下所示。
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/SelectInstitutionToEdit
和 yourSite/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")]
。