ASP.从类中访问路由参数

本文关键字:路由 参数 访问 ASP | 更新日期: 2023-09-27 18:07:07

我正在构建一个小型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)
    {
    }
}

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

是否有办法得到这些参数?我知道在控制器内部,我可以在动作方法中获得它们作为参数-但这不是我在这种情况下想要的-我想把它放在一个与控制器无关的类中。

谢谢

ASP.从类中访问路由参数

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

最简单的方法:

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

不要忘记将命名空间添加到Web。