MVC javascript重定向页面不工作
本文关键字:工作 javascript 重定向 MVC | 更新日期: 2023-09-27 18:27:35
在MVC中,控制器的默认视图允许用户通过选择索引中的项目并使用该id访问特定的编辑页面来访问编辑页面。
在这个MVC编辑页面中,我有一个javascript,它可以对下拉列表中的更改做出反应。下拉列表表示索引页面中可用的潜在id的子集,通常,有人会选择与当前显示的不同的id。
对控件的回发在C#中正常工作,我可以找到与id相关的模型。在C#控制器端,这一切看起来都是正确的。然而,当我试图让它重定向回相同的编辑页面,但使用不同的id(来自下拉列表的id)时,页面会返回到ajax调用。
有没有办法"短路"ajax调用,让它"知道"它不会返回,而是让C#重定向到编辑页面(就像从索引页面中选择元素时发生的情况一样)。
提前感谢
Joseph Doggie
如果您正在进行ajax请求,那么您必须实现一种重定向方法。取决于您的ajax协议。。。您正在返回json吗?html。。。
如果返回json,您可以在响应中添加一个标志,告诉这是否是重定向答案,并在js:中执行重定向
window.location=url
好吧,至少有一种方法可以做到这一点。
假设使用名为YController:的控制器编辑X
JavaScript:var MyControllerUrlSettings={MyControllerPrepareModifyXInfoUrl:'@Url.Action("PrepareModifyAssetInfo","Y",new{x_txt="param"})'}
然后有一个JavaScript来处理下拉更改:
$('#ModelXList').change(function () {
//// alert('Change detected');
if ($("#ModelXList").val() != "") {
//// alert('Reached here');
var XNbrString = $("#ModelXList").val();
var trimmedXNbrString = $.trim(XNbrString);
//// debugger;
if (trimmedXNbrString != "") {
var url = MyControllerUrlSettings.MyControllerPrepareXInfoUrl;
window.location.href = url.replace('__param__', trimmedXNbrString);
}
}
else {
}
});
最后,在控制器中,有一种方法:
public ActionResult PrepareModifyXInfo(string XNbr_txt)
{
// we cannot save anything here to cdll_cdcloanerlist;
// static variables must be used instead.
/// .... do what you have to do....
return RedirectToAction("ModifyEdit", new { XNbr_txt = XNbr_txt });
}
注意:由于专有的原因,我更改了一些语法,以便一切都是通用的,因此,您可能需要对上面的代码进行一点处理,但它可以使用
替代答案也非常受欢迎!