两种控制器方法之间有歧义

时间:2013-10-07 15:44:45

标签: c# asp.net-mvc

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

public ActionResult Projects()

public ActionResult Projects(string s)

调试时我将字符串发送到第二种方法我得到的错误是当前请求在这两种方法之间是不明确的。

为什么会这样,因为那些方法签名不同?

3 个答案:

答案 0 :(得分:5)

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

如果HttpPost不适合你......你需要更改动作名称。

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

答案 1 :(得分:4)

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

[HttpGet]
public ActionResult Projects()


[HttpPost]
public ActionResult Projects(string s)

或更改其中一个方法的动作名称

答案 2 :(得分:1)

字符串是nullable type

因此,您的路线将与optional的两种方法相匹配。

以下是有效的

  

/主页/项目/

     

/主页/项目/商业/

用不同的名字装饰

 public ActionResult ProjectBySting(string s)

或动词如[HttpPost]/[HttpGet]