【问题标题】:MVC Routing to a Blog CategoryMVC 路由到博客类别
【发布时间】:2013-01-10 09:13:02
【问题描述】:

我已经在RouteConfig 中有一个路由,当有一年和一个月时重定向到Archive 动作:-

routes.MapRoute("Blog", "Blog/{action}/{id}",
new
{
    controller = "Blog",
    action = "show",
    id = ""
});

现在我希望有另一个MapRoute 在有类别时重定向到Archive 操作,例如Blog/Archive?catId=2

我怎样才能做到这一点?

【问题讨论】:

  • er - 那条路线是为'show' 行动?另外-您不要“路由”查询字符串参数;因为它们不是 url 路径的一部分。查询字符串参数通常映射到目标操作方法上的参数。
  • 不一样吗?你只在你的路由中指定了默认值。这意味着如果它没有改变,它将使用Blog/show。要执行 Archive 操作,Blog/Archive/2 应该可以工作。在此操作方法接受 int id.. 而不指定其他路线。
  • 其实我做错了。我将类别重定向到与年/月操作相同的操作。我将类别更改为不同的操作,它现在可以工作了。我不需要我相信的 RouteConfig 中的路由

标签: c# asp.net-mvc razor asp.net-mvc-4 asp.net-mvc-routing


【解决方案1】:

您可以在 RouteConfig 中添加

routes.MapRoute("Archive", "Blog/Archive", new {controller = "Blog", Action = "Archive" });

在您的控制器中,您可以执行此操作

public void Archive(int catId) {
    ...
}

这将自动将 catId 查询字符串值映射到 catId 变量。

【讨论】:

  • 注意:此路由映射必须 global.asax 中的另一个(非归档)路由映射之前才能工作。否则Blog/Archive 会看起来像Blog/{action},并首先被抓住。
  • 其实我不需要这个路由动作,因为我是直接从局部视图重定向的。我的错。但将来可能会有所帮助,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 2017-10-02
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多