3

わかりました-誰かが私の前にこれを行ったに違いありません。

私は、検索ボックスとフィルター処理するためのチェックボックスを備えた Ajax フォーム (Ajax フォーム ヘルパー) を持っています。検索結果は、部分ビューによって下に表示されます。下記参照:

ここに画像の説明を入力

コードは次のとおりです。

Search.cshtml

@using (Ajax.BeginForm("SearchStuff", "FooController", new AjaxOptions
{
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "GET",
    OnFailure = "searchFailed",
    LoadingElementId = "progress",
    UpdateTargetId = "search-results",
}))
{
    <div>
        <div class="search-filter">
            <span class="searchFilter">          
                <input type="checkbox" name="chkAll" checked />
                All
                <input type="checkbox" name="chkJournal" />
                Journal
                <input type="checkbox" name="chkBook" />
                Book
                <input type="checkbox" name="chkBookChapter" />
                Book Chapter
                <input type="checkbox" name="chkReport" />
                Report
                <input type="checkbox" name="chkWebsite" />
                Website
                <input type="checkbox" name="chkPersComm" />
                Personal Comm
                <input type="checkbox" name="chkConference" />
                Conference
                <input type="checkbox" name="chkMap" />
                Map
                <input type="checkbox" name="chkThesis" />
                Thesis 
            </span>
        </div>

        <div class="searchbox">
            <input type="search" name="q" autocomplete="off"/>
            <input class="submit-button" type="submit" value="Search" /> 
        </div> 
    </div>
}

<div id="search-results" class="search-results">

</div>

ページネーションの問題

私は今、少し賢くしようと試み始めており、検索結果の最初のセットでページネーションが返されるように Ajax Pager を含めました。

ここに画像の説明を入力

問題は、ユーザーがレンダリングする次のページを選択したときに ajax 検索フォームにすべての値を保持する必要があることですが、FooController の SearchStuff メソッドでデバッグすると、検索パラメーターについて何もわかりません。検索パラメーターを送信するために何をすべきかを誰かが提案できますか?

<div class="pager">
    @Html.Raw(
        Ajax.Pager(new AjaxOptions
        {
            UpdateTargetId = "search-results",
            OnBegin = "beginPaging",
            OnSuccess = "successPaging",
            OnFailure = "failurePaging"
        },
                      Model.PageSize,
                      Model.PageNumber,
                      Model.TotalItemCount,


                      new { controller = "FooController", action = "SearchStuff"})
    )
</div>
4

1 に答える 1

0

新しい AjaxOptions で HttpMethod="Get" を使用します。Request[] でコントローラーを変更して、検索パラメーターを取得します。

参照

WebGrid + ページング + 並べ替え + .NET 4.0 のフィルタリングでフィルターが失われる

于 2012-11-09T08:33:41.457 に答える