2

フォームに含まれる MVC ビュー (.aspx) には、件名、人物に関連するデータを表示するいくつかのコントロール (グリッド、テキスト ボックス) があります。データの大部分は表示専用であるため、フォームに送信ボタンは必要ありません。ただし、コメントを表示するグリッド (Telerik MVC) があります。ユーザーはテキストボックスにコメントを追加できる必要があり、そのコメントはグリッドに表示される必要があります。コメント データは 2 つの異なるデータベース ソースから取得され、ストアド プロシージャにマージされるため、インライン グリッド編集を使用できません。

質問1。

完全なフォームのポストバックやページのちらつきなしで、ラッピング DIV のコンテンツ (つまり、新しいコメントを含むテキスト ボックス) をコントローラーに非同期的にポストバックすることは可能ですか?

ありがとう、

アーノルド

4

2 に答える 2

1

ボタンをクリックしたときに発生するjQuery/JavaScript post関数を使用して、テキストボックスの内容(新しいコメント)をコントローラーアクションに「送信」するボタンを作成できます。

コントローラアクションは、新しいコメントを特定のデータベースに保存できます。その後、「成功」メソッドを追加すると、ajaxRequest()を呼び出してグリッドを更新できます。

    $("#submitButton").click(function () {

    var comment = $("#commentTextbox").val();

    $.ajax({ type: "POST",
                    url: "/Controller/UpdateCommentsGrid",
                    datatype: "json",
                    traditional: true,
                    data:
                          {
                              'comment': comment                      
                          },
                    success: function () {
                        var grid = $('#YourGridName').data('tGrid');
                        grid.ajaxRequest();
                    }
                });

    });

お役に立てれば。

于 2010-12-30T14:55:33.243 に答える
0

はい、可能です。例として、2番目のDIVのみを投稿する次のフォームを取り上げます。

<form action="/foo" method="post">
    <div id="section1">
        <input type="text" name="item1" />
        <input type="text" name="item2" />
    </div>

    <div id="section2">
        <input type="text" name="item3" />
        <input type="text" name="item4" />
    </div>
</form>

そして、次のようなAJAXリクエストを送信できます。

var form = $('#section2').wrap('<form/>').parent();
$.post('/foo', form.serialize(), function(result) {
    alert('successfully posted');
});
于 2010-12-30T14:52:36.293 に答える