C# 两种控制器方法之间存在歧义
在我的asp.net mvc4控制器中,我有两种操作方法C# 两种控制器方法之间存在歧义,c#,asp.net-mvc,C#,Asp.net Mvc,在我的asp.net mvc4控制器中,我有两种操作方法 public ActionResult Projects() 及 在调试时,当我向第二个方法发送字符串时,我得到一个错误,即当前请求在这两个方法之间不明确 为什么呢,因为它们有不同的方法签名?用动词修饰它们,它们有不同的功能签名,但最重要的是它们有相同的ActionName [HttpGet] public ActionResult Projects() [HttpPost] public ActionResult Projects
public ActionResult Projects()
及
在调试时,当我向第二个方法发送字符串时,我得到一个错误,即当前请求在这两个方法之间不明确
为什么呢,因为它们有不同的方法签名?用动词修饰它们,它们有不同的功能签名,但最重要的是它们有相同的ActionName
[HttpGet]
public ActionResult Projects()
[HttpPost]
public ActionResult Projects(string s)
或者更改其中一个方法的操作名称。MVC不能支持同名的两个操作。。。即使有不同的签名。 唯一的例外是当其中一个动作用不同的动词属性修饰时,如
[HttpPost]
如果HttpPost不适合您。。。您需要更改操作名称
只要检查一下,就有一些替代方法可以帮助您拥有两个同名的操作:字符串是
可空类型
因此,您的路线将匹配可选的两种方法
在你的情况下,以下是有效的
/家庭/项目/
/家庭/项目/业务/
所以用不同的名字来装饰
public ActionResult ProjectBySting(string s)
或者类似于[HttpPost]/[HttpGet]
的动词,我通常通过路由解决这个问题。您可以使用标准路由将它们移动到不同的控制器来修复它,也可以使用attributerouting.net中的内容。你可以给他们不同的课程名称我不太喜欢路由。。。但你是对的。在我的项目中,我们有60个控制器始终使用标准路由。
public ActionResult ProjectBySting(string s)