这么简单的设置,我知道我在这里错过了一些愚蠢的东西。
JS:
$("#Affiliate").change(function () {
var selectedItem = $(this).val();
$.ajax({
cache: false,
type: "POST",
url: "@(Url.Action("ChangeOrg", "ScheduleStatistic"))",
data: { "organazation": selectedItem }
});
});
查看:
<select id="Affiliate" class="form_select" style="z-index: 3000; width: 100%;">
<option value="Org1">Foo</option>
<option value="Org2">Bar</option>
控制器:
public ActionResult ChangeOrg(string organazation)
{
switch (organazation)
{
case "Org1":
return RedirectToAction("Index", new { orgURL = "URL_Org1" });
break;
case "Org2":
return RedirectToAction("Index", new { orgURL = "URL_Org2" });
break;
default:
return this.View();
}
}
然而,当它到达那个动作结果时...它永远不会执行redirectToAction但是如果我输入URL&#34; Localhost / ChangeOrg?Organazation = Org1&#34;它正确地去了那里。有什么想法吗?
答案 0 :(得分:3)
服务器端重定向实际上是通过客户端访问完成的。重定向与ajax请求无关,因此浏览器永远不会调用重定向的URL。
Index
行动的假设结果是什么,以及如何在ajax的succes
上使用它?
根据您的真实需要,这可能对您有用:
public ActionResult ChangeOrg(string organazation)
{
switch (organazation)
{
case "Org1":
return Index("URL_Org1");
break;
case "Org2":
return Index("URL_Org2");
break;
default:
return this.View();
}
}
<强>更新强>
如果在Affiliate
值更改时应将用户重定向到其他页面,则您不需要ajax
:
$("#Affiliate").change(function () {
var selectedItem = $(this).val();
var url = "@(Url.Action("ChangeOrg", "ScheduleStatistic"))?organazation=" + selectedItem,
window.location.assign(url);
});
答案 1 :(得分:0)
ajax不会重定向。要重定向,您需要在ajax调用
上成功$.ajax({
cache: false,
type: "POST",
url: "@(Url.Action("ChangeOrg", "ScheduleStatistic"))",
data: { "organazation": selectedItem }
success: function(result){
if(result.Success){
window.location = "@Url.Action(newaction, newcontroller)"
}
}
});