0

我在重定向获取现有网址时遇到问题。我有一个页面,上面有谷歌图表,我在条形图中的条形图中添加了一个侦听器。当用户单击其中一个条形图时,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
4

2 回答 2

0

使用 window.location.assign("/newController/newPage/" + monthsTransform),而不是 window.location.href

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

于 2012-07-23T09:17:56.327 回答
0

查看我关于在服务器端创建 URL 的博客文章:

http://ilovedevelopment.blogspot.co.uk/2012/04/aspnet-mvc-3-generating-actionlink-in.html

为简洁起见,我在下面粘贴了它的症结 - 根据需要进行修改:

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 结果返回。

于 2012-07-23T09:28:32.410 回答