1

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

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

回发到控件在 C# 中正常工作,我可以找到与 id 一起使用的相关模型。在 C# 控制器端,这一切似乎都是正确的。但是,当我尝试让它重定向回相同的编辑页面但具有不同的 id(来自下拉列表)时,页面将恢复为 ajax 调用。

无论如何“短路” ajax 调用,以便它“知道”它不会返回但让 C# 重定向到编辑页面(就像从索引页面中选择一个元素时发生的情况一样)。

提前致谢,

约瑟夫小狗

4

2 回答 2

1

如果您正在制作ajax requet,那么您必须实现一种重定向方式。取决于您的 ajax 协议...您返回 json 吗?html...

如果返回 json,您可以在响应中添加一个标志,告诉您这是一个重定向答案并在 js 中执行重定向:

window.location = 网址

于 2013-08-14T13:19:18.717 回答
0

好的,至少有一种方法可以做到这一点。

假设使用名为 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 });
        }

注意:出于专有原因,我更改了一些语法,以便一切都通用,因此,您可能需要稍微使用上面的代码,但它可以工作

也非常欢迎替代答案!

于 2014-04-22T19:24:18.583 回答