加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET-MVC.如何从URL获取控制器名称?

发布时间:2020-12-16 00:14:56 所属栏目:asp.Net 来源:网络整理
导读:如何使用我在Global.asax中定义的路由获取相对Url的控制器名称? 例: 如果我有这样的路线: routes.MapRoute( "Default",// Route name "{language}/{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id =
如何使用我在Global.asax中定义的路由获取相对Url的控制器名称?

例:

如果我有这样的路线:

routes.MapRoute(
                "Default",// Route name
                "{language}/{controller}/{action}/{id}",// URL with parameters
                new { controller = "Home",action = "Index",id = "",language = "en" }

从字符串“?/ en / products / list”我想要产品(控制器名称).有没有现成的方法呢?

解决方法

请参阅Stephen Walther的博客文章 ASP.NET MVC Tip #13 – Unit Test Your Custom Routes

MvcFakes项目有一个旧的System.Web.Abstractions参考.所以你必须更换它
使用新的并重新编译项目以获取MvcFakes.dll.

这是我的代码:

public string getControllerNameFromUrl()
{
    RouteCollection rc = new RouteCollection();
    MvcApplication.RegisterRoutes(rc);
    System.Web.Routing.RouteData rd = new RouteData();
    var context = new FakeHttpContext("" + HttpContext.Request.Url.AbsolutePath);
    rd = rc.GetRouteData(context);
    return rd.Values["action"].ToString();
}

在上面的代码中,“MvcApplication”是Global.asax中的类名.

祝你好运 !

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读