javascript - 如何从另一个 View 上编写的 JS 代码重定向到 Controller 并与其一起传递 JSON 对象

标签 javascript asp.net-mvc-3 extjs razor

我正在使用 ASP.NET MVC 3,而且我是它的新手。我在一个 View 上有一个 EXTJS 网格,在进行选择后,用户将被重定向到填充所选值的另一个网格。该网格放置在另一页上。在父网格上,我使用了这个:

$(function () {
    $("#btnRedirect").click(function () {
        GetSelectedRecord(); //Gets the selected record on the jsonlst variable


        var link = '@Url.Action("GetData","ChildGrid",new {jsonData="-1"})';

        link = link.replace("-1", jsonlst);
        window.location.href = link;
    });
});

其中 jsonlst 是包含从网格中选择的记录的 json 对象。

GetData 操作仅具有:-

public ActionResult Get(string jsonData)
    {

        lst = new JavaScriptSerializer().Deserialize<IList<ParentGrid>>(jsonData);

        return RedirectToAction("Index", new { strJson = jsonData });
    }

但问题是我的 URL 包含整个 json 字符串作为查询字符串,这看起来不太好。还有其他方法可以实现这一目标吗?

最佳答案

如果您不想在 URL 中显示 json,则在将数据发送到“getdata”操作时应该使用 POST 而不是 GET。 我能想到的最简单的方法是创建一个带有隐藏字段的表单,然后提交它。 所以你在某个地方创建了一个表单

<form id="something" href='@Url.Action("GetData","ChildGrid")' method="POST">
     <input type="hidden" name="jsonData" id="jsonData" />
</form>

然后在 btnredirect 中执行以下操作:

$("#jsonData").value(jsonLst);
$("#something").submit();

您必须确保在 Controller 中,可以使用 POST 方法访问该操作。

另外为什么要混合 jquery 和 EXTjs ?如果您使用 EXTJ 开发大部分 UI,那么最好使用 ExtJS 而不是 jquery 来进行事件和 DOM 操作。

关于javascript - 如何从另一个 View 上编写的 JS 代码重定向到 Controller 并与其一起传递 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11045997/

相关文章:

javascript - Angular $parsers 在 View 更改和模型更改后调用

javascript - 如何禁用 storybook 的 webpack 的 eslint-loader?

javascript - ExtJS:范围混淆

javascript - jQuery 获取特定 div 下的所有元素

javascript - html 输入数据列表获取选定的值并传递到方法中

css - MVC 3 : Can't Load Partial View without Inheriting CSS from Master Page (Telerik Report Viewer + Bootstrap)

asp.net - MVC3 Action 作为一个简单的 Web 服务

javascript - SWF 不在 IE9 中呈现(但在 Chrome/FF 中呈现)

extjs - 立即加载 TreeStore。外部4

javascript - 动态卸载和重新加载 js/css 文件时在 extjs 版本之间切换的问题