C# MVC javascript重定向页面不工作
在MVC中,控制器的默认视图允许用户通过选择索引中的项目并使用该id访问特定的编辑页面来访问编辑页面 在这个MVC编辑页面中,我有一个javascript,可以对下拉列表中的更改做出反应。下拉列表表示索引页中可用的潜在id的子集,通常,有人会选择与当前显示的id不同的id 回发到控件在C#中正常工作,我可以找到与id匹配的相关模型。在C#控制器端,这一切看起来都是正确的。但是,当我试图让它重定向回同一个编辑页面,但id不同(从下拉列表中),页面会返回到ajax调用 是否存在“短路”ajax调用的方法,以便它“知道”它不返回,但让C#重定向到编辑页面(就像从索引页面选择元素时发生的情况一样) 提前感谢,C# MVC javascript重定向页面不工作,c#,asp.net-mvc,postback,http-redirect,C#,Asp.net Mvc,Postback,Http Redirect,在MVC中,控制器的默认视图允许用户通过选择索引中的项目并使用该id访问特定的编辑页面来访问编辑页面 在这个MVC编辑页面中,我有一个javascript,可以对下拉列表中的更改做出反应。下拉列表表示索引页中可用的潜在id的子集,通常,有人会选择与当前显示的id不同的id 回发到控件在C#中正常工作,我可以找到与id匹配的相关模型。在C#控制器端,这一切看起来都是正确的。但是,当我试图让它重定向回同一个编辑页面,但id不同(从下拉列表中),页面会返回到ajax调用 是否存在“短路”ajax调用的
Joseph Doggie如果要重新使用ajax,那么必须实现一种重定向方法。 取决于您的ajax协议。。。你回来了吗?html 如果返回json,您可以在响应中添加一个标志,告知这是否是重定向答案,并在js中执行重定向:
window.location=url如果您正在重新请求ajax,那么您必须实现一种重定向方法。 取决于您的ajax协议。。。你回来了吗?html 如果返回json,您可以在响应中添加一个标志,告知这是否是重定向答案,并在js中执行重定向:
window.location=url好的,至少有一种方法可以做到这一点 假设使用名为YController的控制器编辑X: JavaScript: var MyControllerUrlSettings={ MyControllerPrepareModifyXInfoUrl:“@Url.Action(“PrepareModifyAssetInfo”,“Y”,新的{x_txt=“参数”}” } 然后有一个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 });
}
注意:出于专有的原因,我更改了一些语法,以便所有内容都是通用的,因此,您可能需要稍微使用上面的代码,但它可以工作
我们也非常欢迎其他答案 好的,至少有一种方法可以做到这一点 假设使用名为YController的控制器编辑X: JavaScript: var MyControllerUrlSettings={ MyControllerPrepareModifyXInfoUrl:“@Url.Action(“PrepareModifyAssetInfo”,“Y”,新的{x_txt=“参数”}” } 然后有一个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 });
}
注意:出于专有的原因,我更改了一些语法,以便所有内容都是通用的,因此,您可能需要稍微使用上面的代码,但它可以工作
我们也非常欢迎其他答案 你能把你的密码寄出去吗?控制器和客户端JavaScript。你能发布你的代码吗?控制器和客户端JavaScript。