MVC javascript重定向页面不起作用
Posted
技术标签:
【中文标题】MVC javascript重定向页面不起作用【英文标题】:MVC javascript redirect page not working 【发布时间】:2013-08-16 11:09:52 【问题描述】:在 MVC 中,控制器的默认视图允许通过选择索引中的项目并使用该 ID 到达特定的编辑页面来到达编辑页面。
在这个 MVC 编辑页面中,我有一个对下拉列表中的更改做出反应的 javascript。下拉列表代表索引页面中可用的潜在 id 的子集,一般来说,有人会选择与当前显示的不同的。
回发到控件在 C# 中正常工作,我可以找到与 id 相关的模型。在 C# 控制器端,这一切似乎都是正确的。但是,当我尝试让它重定向回相同的编辑页面但使用不同的 id(来自下拉菜单)时,页面将恢复为 ajax 调用。
无论如何“短路” ajax 调用,以便它“知道”它不会返回但让 C# 重定向到编辑页面(就像从索引页面中选择一个元素时发生的情况一样)。
提前致谢,
约瑟夫小狗
【问题讨论】:
你能发布你的代码吗?控制器和客户端 JavaScript。 【参考方案1】:好的,至少有一种方法可以做到这一点。
假设使用名为 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 );
注意:出于专有原因,我更改了一些语法,以便一切都通用,因此,您可能需要稍微使用上面的代码,但它可以工作
也非常欢迎其他答案!
【讨论】:
【参考方案2】:如果您正在制作 ajax requet,那么您必须实现一种重定向方式。 取决于您的 ajax 协议...您返回 json 吗? html ...
如果返回 json,您可以在响应中添加一个标志,说明这是一个重定向答案并在 js 中执行重定向:
window.location = 网址
【讨论】:
以上是关于MVC javascript重定向页面不起作用的主要内容,如果未能解决你的问题,请参考以下文章
重定向到外部 Javascript 函数中的 URL 不起作用
JavaScript 重定向在 Facebook 应用内浏览器中不起作用
Window.Location.Href 或其他重定向 _self 的方法不起作用(MVC 视图)