在MVC中,控制器的默认视图允许用户通过选择索引中的项目并使用该ID访问特定的编辑页面来访问编辑页面。
在这个MVC编辑页面中,我有一个javascript可以对下拉列表中的更改做出反应。下拉列表表示索引页面中可用ID的子集,通常,有人会选择与当前显示的ID不同的一个。
控件的回发在C#中正常工作,我可以找到与id一起使用的相关模型。在C#控制器端看起来都是正确的。但是,当我尝试将其重定向回相同的编辑页面但具有不同的ID(来自下拉列表)时,页面将恢复为ajax调用。
是否有“短路”ajax调用以便它“知道”它不会返回但是让C#重定向到编辑页面(就像从索引页面中选择一个元素时发生的那样) )。
提前致谢,
Joseph Doggie
答案 0 :(得分:1)
如果你正在制作ajax requet,那么你必须实现一种重定向方式。 取决于你的ajax协议......你回来了json吗? HTML ...
如果返回json,你可以在你的回复中添加一个标志,告诉这是一个重定向答案并在js中重定向:
window.location = url
答案 1 :(得分:0)
好的,至少有一种方法可以做到这一点。
假设使用名为YController的Controller编辑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 });
}
注意:出于专有原因,我更改了一些语法,以便一切都是通用的,因此,您可能需要稍微使用上面的代码,但它可以正常工作
也欢迎替代答案!