【问题标题】:ASP.NET Razor get Area in URLASP.NET Razor 获取 URL 中的区域
【发布时间】:2013-02-02 04:24:22
【问题描述】:

有没有办法使用 ASP.NET Razor 语法从请求中获取区域组件?

http://localhost:12345/SomeController/SomeAction
http://localhost:12345/MyArea/AnotherController/AnotherAction

我想使用 Razor 干净可靠地获取 URL 的“MyArea”部分。

最好的方法是什么?

【问题讨论】:

    标签: c# razor asp.net-mvc-areas


    【解决方案1】:

    我实际使用过这个:

    var area = ViewContext.RouteData.DataTokens["area"];
    

    【讨论】:

    • 谢谢!我读过的大部分内容都说创建一个 html 帮助器类。一个简单的事情的代码太多了。感谢您保持简单!正是我需要的。
    【解决方案2】:

    我在另一个帖子中发现了这个:

    String URL to RouteValueDictionary

    var request = new HttpRequest(null, "http://localhost:3333/Home/About", "testvalue=1");
    var response = new HttpResponse(new StringWriter());
    var httpContext = new HttpContext(request, response);
    var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(httpContext));
    

    然后得到面积:

    string area = routeData.DataTokens["area"].ToString();
    

    或者,您也可以只使用:

    var action = RouteData.Values["area"];
    

    祝你好运。

    【讨论】:

      【解决方案3】:

      这应该为你做。

      @ViewContext.Controller.ValueProvider.GetValue("area").RawValue.ToString()
      

      【讨论】:

      • 这会返回 NullReferenceException。
      • @AdamLevitt 您可能需要检查 GetValue("area") 的返回值是否为空。我假设空值意味着您没有区域。
      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 2021-08-02
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2018-03-11
      相关资源
      最近更新 更多