我目前正在与mvc合作。我有一个带有多个按钮的页面,这会让事情变得复杂一些。但是我使用的按钮调用jquery函数将数据发布到控制器。这按预期工作,数据到达操作,操作执行除重定向之外的所有操作。
该函数将数据发布到控制器,或允许控制器查看值并构建一个URL然后重定向到。但是重定向不起作用,该函数按预期调用成功函数。如果我将数据返回到警报中,则会在警报窗口中返回页面代码而不是URL。
以下是代码:
<input type="submit" value="Assign" name="Assign" onclick="doRedirect()" />
function doRedirect() {
var action = '@Url.Action("Redirect")';
//alert(action);
var opt = {
type: "POST",
data: {
Team: $('#Team option:selected').val()
},
url: action,
success: RedirectSuccess
};
jQuery.ajax(opt);
}
function RedirectSuccess(data) {
if (data != undefined) {
data;
}
}
public ActionResult Redirect(string Team)
{
var hostName = "http://localhost/test/testpage.aspx?";
var team = "&Team=" + Team;
var filterUrl = Team;
return Redirect(filterUrl);**//this doesnt work**
}
答案 0 :(得分:3)
不要从操作中发回重定向结果,而是尝试发回要重定向到的网址。在客户端,您阅读请求的响应,并通过将window.location.href
设置为从服务器返回的URL来执行重定向。
在您的操作中,您可以将URL作为JSON返回,例如:
return Json(new { url: filterUrl });
在你的成功回调中,你这样做是为了重定向:
if (data !== undefined && data.url !== undefined) {
window.location.href = data.url;
}
答案 1 :(得分:0)
这就是我所做的。
public string Redirect(string Team)
{
var hostName = "http://localhost/test/testpage.aspx?";
var team = "&Team=" + Team;
var filterUrl = hostname + Team;
return filterUrl;
}
function RedirectSuccess(data) {
if (data != undefined) {
window.location = data;
}
}
以及我的搜索成功