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

MVC javascript重定向页面不工作

如果您正在进行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 });
        }

注意:由于专有的原因,我更改了一些语法,以便一切都是通用的,因此,您可能需要对上面的代码进行一点处理,但它可以使用

替代答案也非常受欢迎!