Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC-从类访问路由参数_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

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

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 =

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

    }
}
在该扩展方法中,我希望获得路由中定义的语言参数

有没有办法找到这些参数?我知道在控制器中,我可以将它们作为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中,这样您就不需要在希望使用名称空间的任何地方导入名称空间