在我的 asp.net mvc4 控制器中,我有两种操作方法
public ActionResult Projects()
和
public ActionResult Projects(string s)
在我将字符串发送到第二种方法时进行调试时,我收到错误消息,即当前请求在这两种方法之间不明确。
为什么会这样,因为它们具有不同的方法签名?
在我的 asp.net mvc4 控制器中,我有两种操作方法
public ActionResult Projects()
和
public ActionResult Projects(string s)
在我将字符串发送到第二种方法时进行调试时,我收到错误消息,即当前请求在这两种方法之间不明确。
为什么会这样,因为它们具有不同的方法签名?
MVC 它不能支持具有相同名称的两个操作......即使具有不同的签名。唯一的例外是当其中一个动作用不同的动词属性修饰时,例如[HttpPost]
.
如果 HttpPost 不适合您...您需要更改操作名称。
只是检查一下,有一些替代方法可以帮助您进行 2 个具有相同名称的操作:https ://stackoverflow.com/a/1045616/7720
用动词装饰它们,它们具有不同的功能签名,但最重要的是它们具有相同的 ActionName
[HttpGet]
public ActionResult Projects()
[HttpPost]
public ActionResult Projects(string s)
或更改这些方法之一的动作名称
字符串是nullable type
.
因此,您的路线将匹配optional
.
在您的情况下,以下是有效的
/首页/项目/
/首页/项目/业务/
所以用不同的名字装饰
public ActionResult ProjectBySting(string s)
或动词之类[HttpPost]/[HttpGet]