【问题标题】:ASP.NET MVC - access route parameters from classASP.NET MVC - 从类访问路由参数
【发布时间】:2014-06-07 17:10:54
【问题描述】:

我正在构建一个小型 ASP.NET MVC 网站,它是多语言的,但使用相同的代码库。我有一个接受 xPath 字符串并从适当的语言 xml 文件中读取的类。

要设置语言,我定义了以下路线:

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

现在我想为 Html 编写一个扩展方法,它将接受路径字符串并返回值。

public static class LanguageLiteralExtension
{
    public static string LanguageLiteral(this HtmlHelper helper, string xPath)
    {

    }
}

在该扩展方法中,我想获取路由中定义的语言参数。

这些参数有什么办法吗?我知道在控制器内部我可以将它们作为操作方法中的参数 - 但在这种情况下这不是我想要的 - 我希望将它放在与控制器无关的类中。

谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-4


    【解决方案1】:

    您仍然可以从助手中的请求上下文中访问所有内容,并且无需将路径作为参数传递,只需从路由数据中获取即可!

    最简单的方法:

    public static class LanguageLiteralExtension
    {
        public static string LanguageLiteral(this HtmlHelper helper)
        {
            return helper.ViewContext.RequestContext.RouteData.Values["language"].ToString();
        }
    }
    

    不要忘记将命名空间添加到 Web.config 的 View 文件夹中,这样你就不需要在任何你想使用它的地方导入命名空间了。

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多