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」アクションにデータを送信するときに、GET の代わりに POST を使用する必要があります。私が考えることができる最も簡単な方法は、隠しフィールドを持つフォームを作成してから送信することです。どこかでフォームを作成します

<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 を混ぜているのですか? ほとんどの UI を EXTJ で開発している場合は、イベントと DOM 操作に jquery ではなく ExtJS を使用することをお勧めします。

于 2012-06-15T07:57:31.507 に答える