C# ASP.NET MVC-从类访问路由参数
我正在构建一个小型的ASP.NET MVC网站,它是多语言的,但使用相同的代码库。我有一个类,它接受xPath字符串并从相应的语言xml文件中读取 要设置语言,我定义了以下路径:C# ASP.NET MVC-从类访问路由参数,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我正在构建一个小型的ASP.NET MVC网站,它是多语言的,但使用相同的代码库。我有一个类,它接受xPath字符串并从相应的语言xml文件中读取 要设置语言,我定义了以下路径: routes.MapRoute( name: "Multilingual", url: "{controller}/{language}/{action}/{id}", defaults: new { controller = "Home", language = "en", action =
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)
{
}
}
在该扩展方法中,我希望获得路由中定义的语言参数
有没有办法找到这些参数?我知道在控制器中,我可以将它们作为action方法中的参数来获取-但这不是我在本例中想要的-我希望它位于与控制器无关的类中
谢谢您仍然可以从助手中的请求上下文访问所有内容,并且不需要将路径作为参数传递,只需从路由数据中获取它 最简单的方法:
public static class LanguageLiteralExtension
{
public static string LanguageLiteral(this HtmlHelper helper)
{
return helper.ViewContext.RequestContext.RouteData.Values["language"].ToString();
}
}
不要忘记将名称空间添加到视图文件夹的Web.config中,这样您就不需要在任何您想使用的地方导入名称空间。您仍然可以从帮助器中的请求上下文访问所有内容,并且不需要将路径作为参数传递,只需从路由数据中获取它 最简单的方法:
public static class LanguageLiteralExtension
{
public static string LanguageLiteral(this HtmlHelper helper)
{
return helper.ViewContext.RequestContext.RouteData.Values["language"].ToString();
}
}
不要忘记将名称空间添加到视图文件夹的Web.config中,这样您就不需要在希望使用名称空间的任何地方导入名称空间