我的重定向拾取现有网址时遇到问题。我有一个页面上有谷歌图表,我在条形图中为条形图添加了一个监听器。当用户单击其中一个条形图时,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
答案 0 :(得分:0)
使用window.location.assign(“/ newController / newPage /”+ monthsTransform),而不是window.location.href
如果您在新URL前添加服务器名称和协议,并使用Html.Action html帮助程序生成URL,那就更好了。
答案 1 :(得分: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结果。