2013-10-11 58 views
0

使用ASP.NET MVC 4我有两个在相同的控制器但具有不同签名的索引方法。为什么我会遇到AmbiguousMatchException?

public ActionResult Index() 
    { 
     //... 
    } 

    public ActionResult Index(ManageOvertimesViewModel model) 
    { 
     //... 
    } 

我不明白为什么我会得到这个错误。 (如果我给出一个HttpPost属性比它的工作,所以可能我会做,但我不明白为什么它不工作。)

+0

可能的重复[如何避免两个控制器操作之间的AmbiguousMatchException?](http://stackoverflow.com/questions/732205/how-can-i-avoid-ambiguousmatchexception-between-two-controller-actions) – twoleggedhorse

+0

@twoleggedhorse:我知道它可以解决,但我很有兴趣为什么框架无法决定根据http参数调用哪一个。 – jannagy02

回答

0

我认为,你不能有2个ActionResult响应相同的HTTP操作主要因为:

如果您使用空参数获取HTTP GET,框架会选择什么操作? 第一个(没有模型绑定)或第二个(有空的模型绑定)?仅仅基于参数并不是那么容易,如果你真的想到它,它可能会导致不希望的结果。

+0

是的,可能这是我接受它的原因,但是如果我有两个索引并且第一个没有参数,它的工作原理是相同的,第二个参数不能为空值。 – jannagy02

+0

你在做第二次索引操作的修改吗?如果不是,你可能只需要一个索引动作与模型(假设它的过滤和逻辑没有多大差别) – JOBG

相关问题