有没有办法让不同参数的多个动作?我已经使用HttpPost
动词标志看到了它,但它似乎在其他地方对我不起作用。
控制器类型FoldersController`上的当前操作请求List
在以下操作方法之间不明确。
public ActionResult List()
{
//...
}
public ActionResult List(DateTime start)
{
// ...
}
public ActionResult List(string key)
{
// ....
}
试试这个路线参数我发现......
我仍然对路由的工作原理感到困惑。这就是我到目前为止所拥有的。 ASP.NET MVC Routing Via Method Attributes
但我仍然得到模棱两可的错误。这对我来说没有多大意义 - 它们是两条完全不同的路线 - 它应该知道完全哪个ActionResult要召唤。但它没有这样做......
[UrlRoute(Path = "List/Days/{days}")]
[UrlRouteParameterConstraint(Name = "days", Regex = @"\d+")]
public PartialViewResult List(int days)
{
return PartialView("List", Folders.List());
}
[UrlRoute(Path = "List/Rings/{ring}")]
[UrlRouteParameterDefault(Name = "ring", Value = "all")]
public PartialViewResult List(string ring)
{
return PartialView("List", Folders.List());
}
答案 0 :(得分:1)
您需要为请求路由机制提供足够的信息,以便能够选择哪一个非模糊地应用,例如,通过在路由注册中提供正则表达式模式,并将某些请求过滤到另一个操作中。 d拨打ListByDate
。
但总的来说,如果事情开始变得令人困惑,那么使用起来会很困惑: - http://odetocode.com/Blogs/scott/archive/2010/01/25/kiss-your-asp-net-mvc-routes.aspx
因此,另一种避免编写正则表达式以通过正则表达式消除日期与“其他所有”操作歧义的方法是使用路由方案: -
答案 1 :(得分:1)
由于您没有设置AcceptVerbs,因此无法确定要调用的方法。你能澄清一下“它在其他地方似乎不适合我吗?”