Asp.net mvc 3 Asp.Net MVC-检查Url中的路由值

Asp.net mvc 3 Asp.Net MVC-检查Url中的路由值,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,问题是关于我网站的主页。 该网站本地化为两种语言,默认语言为IT,备选语言为EN 我的主页是: www.mysite.com 选择英语时,地址为: www.mysite.com/en {language}参数位于myRoutedData中 当然,如果我键入www.mysite.com/it,它会工作,这与www.mysite.com 我要做的是,在我的操作方法中,检查'it'字符串是否存在于url中,如果存在,则直接指向www.mysite.com地址 我可以通过搜索Request.RawU

问题是关于我网站的主页。 该网站本地化为两种语言,默认语言为IT,备选语言为EN

我的主页是:

www.mysite.com
选择英语时,地址为:

www.mysite.com/en
{language}
参数位于my
RoutedData

当然,如果我键入
www.mysite.com/it
,它会工作,这与
www.mysite.com

我要做的是,在我的操作方法中,检查
'it'
字符串是否存在于url中,如果存在,则直接指向
www.mysite.com
地址

我可以通过搜索
Request.RawUrl
字符串来实现这一点,但我想知道是否有更好的方法来实现这一点


谢谢

您可以使用模型绑定来实现这一点-只需将参数添加到您的操作中即可。请注意,在这种情况下,
language
参数也可以从查询字符串或表单值中提取其值,前提是它不会出现在url中

    public ActionResult Index(string language)
    {
        if (string.IsNullOrWhiteSpace(language))
        {
           ///
        }
        return View();
    }
或者,手动提取路线值。在你的行动中

        string language = RouteData.Values["language"].ToString();
        if (string.IsNullOrWhiteSpace(language))
        {
           ///
        }

我知道ModelBinding或RoutedData集合,但这不是我的情况。My RoutedData始终包含Language参数,EN值是默认值,因此如果地址仅为www.mysite.com,则EN值在RoutedData中。我需要的是检查EN值是否在Url字符串中,也许我只能检查字符串。