使用Ajax的ASP-MVC重定向
我的重定向在获取现有url时遇到问题。我有一个页面,上面有谷歌图表,我在条形图的条形图中添加了一个侦听器。当用户单击其中一个条形图时,case语句将确定要传递给路由器的id使用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
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结果