首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的ASP .NET MVC网站上的网址重写

我的ASP .NET MVC网站上的网址重写
EN

Stack Overflow用户
提问于 2012-12-25 17:56:59
回答 1查看 885关注 0票数 0

我正在处理一个图像查看器,所以我有一个名为Viewer的控制器,当我传递给它routeValues时,它的URL就像这样:http://www.mywebsite.com/Viewer?category=1&image=2

以下是用于访问此页面的链接:

代码语言:javascript
运行
复制
@Url.Action("Index", new { category = p.Category, image = p.Image })

但是我希望有这样的网址:http://www.mywebsite.com/Viewer/1/2

我曾尝试在RouteConfig类的RegisterRoutes方法中使用一些技巧,但无法获得前面的结果。

代码语言:javascript
运行
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "Viewer",
            url: "{controller}/{action}/{category}-{image}",
            defaults: new { controller = "Viewer", action = "Index", category = 1, image = 1 }
        );
    }
}

有人知道我可以在哪里做这个吗?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2012-12-25 18:23:54

您需要将更具体的路由放在默认路由之前,因为路由的评估顺序与您声明它们的顺序相同:

代码语言:javascript
运行
复制
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Viewer",
            url: "{controller}/{action}/{category}/{image}",
            defaults: new { controller = "Viewer", action = "Index", category = 1, image = 1 }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14029583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档