Ajax请求是';t在asp.net mvc中进行本地化

本文关键字:mvc net 本地化 asp 请求 Ajax | 更新日期: 2023-09-27 18:00:33

我有一个asp.net mvc 4项目,在本文之后尝试实现本地化http://www.chambaud.com/2013/02/27/localization-in-asp-net-mvc-4/当我尝试使用普通链接时,一切都很好,但当我尝试用ajax链接时,在下一个例子中,我总是出错:

$.ajax({
            url: '/Home/GetJobList',
            contentType: 'application/html; charset=utf-8',
            type: 'GET',
            dataType: 'html'
        })
        .success(function (result) {
            $('#jobsTable').html(result);
        })
        .error(function (xhr, status) {
            alert(status);
        });

在这个例子中,我的ajax请求没有发送到服务器:

$.ajax({
            url: "/" + $.cookie("lang") + '/Home/GetJobList',
            contentType: 'application/html; charset=utf-8',
            type: 'GET',
            dataType: 'html'
        })
        .success(function (result) {
            $('#jobsTable').html(result);
        })
        .error(function (xhr, status) {
            alert(status);
        });

错误我在Global.asax.cs:中的代码内部

var handler = Context.Handler as MvcHandler;
var routeData = handler != null ? handler.RequestContext.RouteData : null;
var routeCulture = routeData != null ? routeData.Values["culture"].ToString() : null; //here is an error

我试着调试,发现它只有Controller、Action、index,并且没有接收区域性:

routes.MapRoute(
    name: "Default",
    url: "{culture}/{controller}/{action}/{id}",
    defaults: new { culture = "ru", controller = "Home", action = "Index", id = UrlParameter.Optional }
);

有人能帮我吗?

Ajax请求是';t在asp.net mvc中进行本地化

如果你使用剃须刀,你可以写

    url : '@Url.Action("GetJobList", "Home")',

剃刀助手然后自动将"@Url.Action("ControllerMethod"、"Controller")"转换为asp.net mvc项目的设置Url模式。