1

我正在使用 ASP.NET MVC 3,我是新手。我在一个视图上有一个 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 字符串作为查询字符串,看起来不太好。还有其他方法可以实现这一目标吗?

4

1 回答 1

0

如果您不想在 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();

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

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

于 2012-06-15T07:57:31.507 回答