C# MVC路由到博客类别

C# MVC路由到博客类别,c#,asp.net-mvc,razor,asp.net-mvc-4,asp.net-mvc-routing,C#,Asp.net Mvc,Razor,Asp.net Mvc 4,Asp.net Mvc Routing,我在RouteConfig中已经有了一条路线,当有一年和一个月时,可以重定向到存档操作:- routes.MapRoute("Blog", "Blog/{action}/{id}", new { controller = "Blog", action = "show", id = "" }); 现在,我希望有另一个MapRoute,当存在一个类别时,它将重定向到Archive操作,例如Blog/Archive?catId=2 我如何才能做到这一点?在您的路线图中,您可以

我在
RouteConfig
中已经有了一条路线,当有一年和一个月时,可以重定向到
存档
操作:-

routes.MapRoute("Blog", "Blog/{action}/{id}",
new
{
    controller = "Blog",
    action = "show",
    id = ""
});
现在,我希望有另一个
MapRoute
,当存在一个类别时,它将重定向到
Archive
操作,例如
Blog/Archive?catId=2


我如何才能做到这一点?

在您的路线图中,您可以添加

routes.MapRoute("Archive", "Blog/Archive", new {controller = "Blog", Action = "Archive" });
在控制器中,可以执行此操作

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

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

er-该路径用于
'show'
操作?另外-您不需要“路由”查询字符串参数;因为它们不是url路径的一部分。查询字符串参数通常映射到目标操作方法上的参数。这不一样吗?您只在路线中指定了默认值。。这意味着如果它没有改变,它将使用
Blog/show
。要进入
Archive
操作,
Blog/Archive/2
应该可以工作。。其中操作方法接受
int id
。。没有指定另一条路线。实际上我犯了一个错误。我将类别重定向到与年/月操作相同的操作。我将类别更改为另一个动作,它现在可以工作了。我不需要RouteConfig I beleiveNote中的路由注意:此路由映射必须位于global.asax中的其他(非存档)路由映射之前,才能工作。否则,
Blog/Archive
将看起来像
Blog/{action}
,并首先在那里被捕获。实际上我不需要此路由操作,因为我直接从局部视图重定向。我的错误。但将来可能会有帮助,谢谢!