繁体   English   中英

ASP.NET MVC-从类访问路由参数

[英]ASP.NET MVC - access route parameters from class

我正在建立一个多语言的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)
    {

    }
}

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

这些参数有什么办法吗? 我知道在控制器内部我可以将它们作为action方法中的参数获取-但这不是我想要的-我希望将其包含在与控制器无关的类中。

谢谢

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

最简单的方法:

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

不要忘记将名称空间添加到View文件夹的Web.config中,那么您就不需要在要使用名称空间的任何地方导入它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM