Проблемы с Html.DropDownList и PagedList - PullRequest
1 голос
/ 18 октября 2011

У меня небольшая проблема.Я пишу простой rss-ридер.Так что у меня есть каналы и предметы.Это вид предметов.поэтому у меня есть SelectedChannel, чтобы пользователь мог выбрать, какой канал он хочет видеть (потому что по умолчанию он будет видеть все элементы со всех каналов)

`public ViewResult Index(string sortOrder, string currentFilter, 
        int? page, int? SelectedChannel)
    {

        var channels = from ch in db.Channels
                       orderby ch.Title
                       select ch;
        ViewBag.SelectedChannel = new SelectList(channels, "ChannelID", "Title", SelectedChannel);
        int channelID = SelectedChannel.GetValueOrDefault();

        ViewBag.DateSortParm = sortOrder == "Date" ? "Date desc" : "Date";
        if (Request.HttpMethod == "GET")
        {
            //page = 1;
        }
        else
        {
            page = 1;
        }
        var items = from i in db.Items
                    select i;
        if (SelectedChannel.HasValue)
        {
             items = from i in db.Items
                     where i.ChannelID.Equals(channelID)
                     select i;
        }
       ...
        return View(items.ToPagedList(pageIndex, pageSize));
    }`

А вот код из index.cshtml

@using (Html.BeginForm()) { <p>Select Channel: @Html.DropDownList("SelectedChannel", "All") &nbsp; <input type="submit" value="Filter" /></p> }

Проблема: Когда пользователь фильтрует 1 канал.Хорошо.Но не ноги на страницу (может быть много страниц).Поэтому, когда пользователь пытается перейти на следующую страницу, параметры фильтра теряются.И я вижу вторую страницу ВСЕХ предметов.Но я хочу видеть 2-ю страницу selectedChannel (потому что он снова становится нулевым).Надеюсь, ты поймешь, что я имел в виду.Спасибо тебе!

Ответы [ 2 ]

0 голосов
/ 16 июля 2012

Вот как я это делаю, и это работает, надеюсь, что-нибудь сработает

@using (Html.BeginForm()) { <p>Select Channel: @Html.DropDownList("SelectedChannel", "All") &nbsp; <input type="submit" value="Filter" /></p> }

@if (Model.HasNextPage) 
{ 
    @Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter ciudad = "param-channel" }, new { id = "mylinkNext"  }) 
    @Html.Raw("&nbsp;"); 
    @Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter, ciudad = "param-channel" }, new { id = "mylinkLast"  }) 
} 


<script type="text/javascript">
    $(function () {
        $('#mylinkNext').click(function () {
            var channel = $("#SelectedChannel").val();
            this.href = this.href.replace("param-channel",encodeURIComponent(channel));
        });
    });
  $(function () {
        $('#mylinkLast').click(function () {
            var channel = $("#SelectedChannel").val();
            this.href = this.href.replace("param-channel",encodeURIComponent(channel));
        });
    });
    </script> 
0 голосов
/ 19 октября 2011
`<div> 
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) 
of @Model.PageCount 
&nbsp; 
@if (Model.HasPreviousPage) 
{ 
    @Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  }) 
    @Html.Raw("&nbsp;"); 
    @Html.ActionLink("< Prev", "Index", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  }) 
} 
else 
{ 
    @:<< 
    @Html.Raw("&nbsp;"); 
    @:< Prev 
} 
&nbsp; 
@if (Model.HasNextPage) 
{ 
    @Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  }) 
    @Html.Raw("&nbsp;"); 
    @Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  }) 
} 
else 
{ 
    @:Next > 
    @Html.Raw("&nbsp;") 
    @:>> 
} 

`

это конец index.cshtml

...