3

在我的 asp.net mvc4 控制器中,我有两种操作方法

public ActionResult Projects()

public ActionResult Projects(string s)

在我将字符串发送到第二种方法时进行调试时,我收到错误消息,即当前请求在这两种方法之间不明确。

为什么会这样,因为它们具有不同的方法签名?

4

3 回答 3

5

MVC 它不能支持具有相同名称的两个操作......即使具有不同的签名。唯一的例外是当其中一个动作用不同的动词属性修饰时,例如[HttpPost].

如果 HttpPost 不适合您...您需要更改操作名称。

只是检查一下,有一些替代方法可以帮助您进行 2 个具有相同名称的操作:https ://stackoverflow.com/a/1045616/7720

于 2013-10-07T15:46:55.073 回答
4

用动词装饰它们,它们具有不同的功能签名,但最重要的是它们具有相同的 ActionName

[HttpGet]
public ActionResult Projects()


[HttpPost]
public ActionResult Projects(string s)

或更改这些方法之一的动作名称

于 2013-10-07T15:46:22.590 回答
1

字符串是nullable type.

因此,您的路线将匹配optional.

在您的情况下,以下是有效的

/首页/项目/

/首页/项目/业务/

所以用不同的名字装饰

 public ActionResult ProjectBySting(string s)

或动词之类[HttpPost]/[HttpGet]

于 2013-10-07T15:50:54.213 回答