4

私は比較的新しい MVC ユーザーで、MVC でページングを適切に機能させるのに苦労しています。

基本的に、部分的なビューでレンダリングされる検索結果がたくさんあります (begin form メソッドを使用):

using (Ajax.BeginForm("Search", "Home", new AjaxOptions
{
    HttpMethod = "GET",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "searchResults",
}))
{
    <input type="text" name="searchString" />
    <input type="submit" value="Search" />
}

部分ビューは次のようにレンダリングされます。

@foreach (var item in @Model)

{

<li>@Html.ActionLink(item.Name, "Result/" + item.Id, "Result")</li>

}

@{if(ViewBag.HasPrevious)
    {
        @Html.ActionLink("<<", "Search", new { searchString = ViewBag.query, page = ViewBag.CurrentPage-1 })
    }
}

@{if(ViewBag.HasNext)
    {
        @Html.ActionLink(">>", "Search", new {  searchString = ViewBag.query, page = ViewBag.CurrentPage+1 })
    }
}

私の問題は、>> または << リンクが単に結果のリストを含む空白のページを作成し、「トップ」インデックス ページのマークアップを保持しないことです。

誰でもこれについて何か考えがありますか。

NBはこのサイトを初めて使用します。回答に賛成票を投じます。

4

1 に答える 1

6

Html.ActionLink通常のアンカーを生成します。このアンカーをクリックすると、このリンクが指しているアドレスにブラウザがリダイレクトされます。これが、パーシャルの内容が新しいウィンドウで表示される理由です。

Ajax.ActionLinkリダイレクトせずにページの一部のみを更新する場合は、代わりにAJAX リンク ( ) を使用できます。

@Ajax.ActionLink(
    "<<", 
    "Search", 
    new { 
        searchString = ViewBag.query, 
        page = ViewBag.CurrentPage - 1 
    },
    new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "searchResults"
    }
)
于 2012-05-01T10:00:32.153 に答える