ASP.NET MVC-从URL中删除控制器名称

 2023-02-17    296  

问题描述

我想从我的URL中删除控制器名称(对于一个特定的控制器).例如:

http://mydomain.com/MyController/MyAction

ASP.NET MVC-从URL中删除控制器名称

我希望将此URL更改为:

http://mydomain.com/MyAction

如何在MVC中完成这件事?我正在使用MVC2,如果无论如何都可以帮助我.

推荐答案

您应该在global.asax中映射新路由(在默认为默认为1之前添加),例如:

routes.MapRoute("SpecificRoute", "{action}/{id}", new {controller = "MyController", action = "Index", id = UrlParameter.Optional});

// default route
routes.MapRoute("Default", "{controller}/{action}/{id}", new {controller = "Home", action = "Index", id = UrlParameter.Optional} );

其他推荐答案

要更新2016/17/18 – 这是最好的方法是使用属性路由.

在routeconfig.cs中这样做的问题是旧路线也将仍然工作 – 所以你将拥有

对同一页面的多个路由对SEO不好 – 可以导致路径问题,并在您的应用程序中创建僵尸页面和错误.

具有属性路由,您避免了这些问题,看到哪些路由在哪里更容易.您所要做的就是将其添加到rateconfig.cs(可能在其他路由可能匹配之前的顶部):

routes.MapMvcAttributeRoutes();

然后将路由属性添加到具有路由名称的每个操作,例如

[Route("MyAction")]
public ActionResult MyAction()
{
...
}

其他推荐答案

以下是从homecontroller删除控制器名称的步骤

步骤1:
创建路由约束.

public class RootRouteConstraint<T> : IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        var rootMethodNames = typeof(T).GetMethods().Select(x => x.Name.ToLower());
        return rootMethodNames.Contains(values["action"].ToString().ToLower());
    }
}

步骤2:
在默认映射上添加新的路由映射,该映射使用我们刚刚创建的路由约束.通用参数应该是您计划用作”根”控制器的控制器类.

routes.MapRoute(
    "Root",
    "{action}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { isMethodInHomeController = new RootRouteConstraint<HomeController>() }
);

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

现在您应该可以访问您的家庭控制器方法,如下所示:
example.com/about,
example.com/contact

这将仅影响HomeController.所有其他控制器都有默认的路由功能.

以上所述是小编给大家介绍的ASP.NET MVC-从URL中删除控制器名称,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:http://www.77isp.com/post/34267.html

=========================================

http://www.77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。