Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC javascript重定向页面不工作_C#_Asp.net Mvc_Postback_Http Redirect - Fatal编程技术网

C# MVC javascript重定向页面不工作

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调用的

在MVC中,控制器的默认视图允许用户通过选择索引中的项目并使用该id访问特定的编辑页面来访问编辑页面

在这个MVC编辑页面中,我有一个javascript,可以对下拉列表中的更改做出反应。下拉列表表示索引页中可用的潜在id的子集,通常,有人会选择与当前显示的id不同的id

回发到控件在C#中正常工作,我可以找到与id匹配的相关模型。在C#控制器端,这一切看起来都是正确的。但是,当我试图让它重定向回同一个编辑页面,但id不同(从下拉列表中),页面会返回到ajax调用

是否存在“短路”ajax调用的方法,以便它“知道”它不返回,但让C#重定向到编辑页面(就像从索引页面选择元素时发生的情况一样)

提前感谢,


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。