【问题标题】:asp.net mvc 5 can i hide controller name from urlasp.net mvc 5 我可以从 url 隐藏控制器名称吗
【发布时间】:2017-08-05 12:27:38
【问题描述】:

当我运行我的项目并单击某个按钮以转到下一页时,我们在 asp.net mvc 5 中有一个项目,然后我们会得到类似的 url www.abx.com/project/projectname。

其中 project 是我的控制器名称,projectname 是 Action 名称

所以如果我想要这样的网址

www.abx.com/projectname

那么这可能吗?

如果有人有解决办法,请给它

这是我的 route.config 文件代码

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    你必须创建一条新路线:

    public static void RegisterRoutes(RouteCollection routes){
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
    routes.MapRoute(
    name: "ProjectName1",
    url: "Projectname1",
    defaults: new { controller = "Project1", action = "Projectname1" }
    );
    
    routes.MapRoute(
    name: "ProjectName2",
    url: "Projectname2",
    defaults: new { controller = "Project2", action = "Projectname2" }
    );
    
    routes.MapRoute(
    name: "ProjectName3",
    url: "Projectname3",
    defaults: new { controller = "Project3", action = "Projectname3" }
    );
    
    
    
    routes.MapRoute(
    name: "Default",
          url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "view1", id = 
    UrlParameter.Optional }
            );
    
    
    }
    

    【讨论】:

    • 我们想要超过 5 页。
    • www.abx.com/project/projectname1 wwww.abx.com/project/projectname2 wwww.abx.com/project/projectname3 wwww.abx.com/project/projectname4 wwww.abx.com/ project/projectname5 我想要 wwww.abx.com/projectname1 wwww.abx.com/projectname2 wwww.abx.com/projectname3 wwww.abx.com/projectname4 wwww.abx.com/projectname5
    • 请检查。
    【解决方案2】:

    如果您只想为一个控制器执行此操作 - @Hamed Javaheri 建议的 add a custom routeor use attribute mapping as described here

    public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Project",
                    url: "projectname",
                    defaults: new { controller = "project", action = "projectname", id = UrlParameter.Optional }
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                );
            }
    

    如果您希望这适用于 许多/大多数 路由,那么您可能需要更改默认映射,类似于以下问题:

    ASP.NET MVC Default URL View

    ASP.NET MVC Routing with Default Controller

     public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Default",
                    url: "{action}",
                    defaults: new { controller = "project", id = "" }
                );
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-16
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多