暧昧行为

时间:2010-01-25 14:33:23

标签: .net asp.net-mvc asp.net-mvc-routing

有没有办法让不同参数的多个动作?我已经使用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());
    }

2 个答案:

答案 0 :(得分:1)

您需要为请求路由机制提供足够的信息,以便能够选择哪一个非模糊地应用,例如,通过在路由注册中提供正则表达式模式,并将某些请求过滤到另一个操作中。 d拨打ListByDate

但总的来说,如果事情开始变得令人困惑,那么使用起来会很困惑: - http://odetocode.com/Blogs/scott/archive/2010/01/25/kiss-your-asp-net-mvc-routes.aspx

因此,另一种避免编写正则表达式以通过正则表达式消除日期与“其他所有”操作歧义的方法是使用路由方案: -

  • /按日期/ YY-MM-DD
  • /通过键/键

答案 1 :(得分:1)

由于您没有设置AcceptVerbs,因此无法确定要调用的方法。你能澄清一下“它在其他地方似乎不适合我吗?”