使用Ajax的ASP-MVC重定向

使用Ajax的ASP-MVC重定向,ajax,asp.net-mvc,Ajax,Asp.net Mvc,我的重定向在获取现有url时遇到问题。我有一个页面,上面有谷歌图表,我在条形图的条形图中添加了一个侦听器。当用户单击其中一个条形图时,case语句将确定要传递给路由器的id google.visualization.events.addListener(wrapper, 'select', selectHandler); function selectHandler() { var selection = wrapper.getChart().getSelection() var

我的重定向在获取现有url时遇到问题。我有一个页面,上面有谷歌图表,我在条形图的条形图中添加了一个侦听器。当用户单击其中一个条形图时,case语句将确定要传递给路由器的id

google.visualization.events.addListener(wrapper, 'select', selectHandler);

function selectHandler() {
  var selection = wrapper.getChart().getSelection()
     var monthsTransform = 0;
        switch(selection[0].column)
           {
            case 1:
                monthsTransform = 0;
                break;
            case 2:
                monthsTransform = 3;
                break;
            case 3:
                monthsTransform = 6;
                break;
            case 4:
                monthsTransform = 12;
                break;
            case 5:
                monthsTransform = 18;
                break;

            //no need to default as already set to 0!
            }
            var url = "newController/newPage/" + monthsTransform;
            window.location.href = url;
        }
我的问题是

window.location.href 
正在将newController/newPage附加到现有url,因此其结果如下:

localhost:1234/oldController/oldPage/newController/newPage/id
使用window.location.assign(“/newController/newPage/”+monthtransform),而不是window.location.href


如果您在新URL前面添加服务器名称和协议,并使用Html.Action Html helper生成URL,那就更好了。

查看我在服务器端创建URL的博客帖子:

为了简洁起见,我将其要点粘贴在下面-根据需要进行修改:

string absoluteAction = string.Format("{0}://{1}{2}",
                                                  Url.RequestContext.HttpContext.Request.Url.Scheme,
                                                  Url.RequestContext.HttpContext.Request.Url.Authority,
                                                  Url.Action("ActionName", "ControllerName", new {Id = "Data"}));
这可以在控制器方法中完成,这样您就可以进行ajax调用并返回正确的url“absoluteAction”作为Json结果