重载ASP.NET MVC操作

时间:2010-09-04 00:36:53

标签: c# asp.net asp.net-mvc

如何重载ASP.NET MVC中的操作,但是支持GET QueryString?我试着做这样的事情:

public JsonResult Find(string q)
{
    ...
}

public JsonResult Find(string q, bool isBlaBla)
{
    ...
}

但只要我访问/controller/find?q=abc/controller/find?q=abc&isBlaBla=false,就会抛出System.Reflection.AmbiguousMatchException

如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

您实际上不需要创建重载。您需要做的就是创建一个包含您期望的所有可能参数的单一操作方法,它将为您映射值(如果可能)。

public JsonResult Find(string q, bool isBlaBla)
{

}

如果你使用的是C#4.0,你甚至可以使用Optional Parameters and Name Arguments

答案 1 :(得分:1)

ASP.NET不支持使用相同的HTTP谓词进行操作重载。

答案 2 :(得分:0)

你应该使用路线,例如find/abcfind/abc/false

如果必须使用查询字符串,则不能使用任何参数并访问HttpContext

中的查询字符串