在Ajax调用时,请求的RouteData为空

时间:2013-10-18 08:07:50

标签: jquery asp.net-mvc-4 routes

我有一个应用程序,我根据发送的语言环境对请求进行了本地化。例如:/ en / MyController / MyAction。然后我检查发送的语言环境:

        if (request.RequestContext.RouteData.Values["locale"] != null)
        {
            locale = request.RequestContext.RouteData.Values["locale"].ToString();
        }

        return locale;

除了(似乎)Ajax调用之外,它工作正常。当我通过我的自定义Ajax表单进行AJAX调用HTML帮助程序request.RequestContext.RouteData.Values [“locale”]为空,即使Glimpse显示路径匹配应该是:

 {locale}/MyArea/{controller}/{action}/{id}

My Form HTML Helper

    public static MvcForm BeginFormLocalized(this AjaxHelper ajax, string action, object routeValues, AjaxOptions options)
    {
        RouteValueDictionary routeDictionary = UrlHelpers.BuildLocalizedRouteValuesDictionary(ajax.ViewContext.RequestContext, routeValues);
        routeDictionary.Add("action", action);
        string routeName = UrlHelpers.GetAppropriateRouteName(routeDictionary);

        return ajax.BeginRouteForm(routeName, routeDictionary, options);
    }

BuildLocalizedRouteValuesDictionary将语言环境添加到RouteValuesDictionary(如果它在请求中存在),GetAppropriateRouteName根据路由值(本地化区域,本地化默认路由或默认路由)返回路由名称。

包含区域设置的Url生成正常,并且还调用了相关操作,但RouteData集合为空并导致本地化回退到默认区域设置。

有什么想法吗?我试过搜索我能想到的一切,但找不到类似的问题。

0 个答案:

没有答案