Действие URL-адреса разбивки на страницы частичного просмотра Razor MVC. Как определить указанный URL-адрес?

URL-адрес по умолчанию: http://ipf.bulgaria.local/Aboutus.aspx

После нажатия URL-адреса страницы: http://ipf.bulgaria.local/api/sitecore/Newsfeed?page=2

Ожидаемый URL: http://ipf.bulgaria.local/Aboutus.aspx?page=2

Может ли кто-нибудь посоветовать мне, как получить ожидаемый URL-адрес и как прочитать «/api/sitecore/Newsfeed»?

<div class="col-sm-10">
    <div class="center">        
            @Html.PagedListPager((PagedList.IPagedList)Model
            .SelectedNewsItems, 
            page => Url.Action("Index", new { page }))
    </div>
</div>

person user3650406    schedule 26.05.2015    source источник
comment
Вы получаете URL-адрес от Sitecore или Lucene/Solr?   -  person Charlie Afford    schedule 21.06.2015


Ответы (3)


Речь идет о области MVC.

Это описано в следующем блоге: http://sitecore.unic.com/2015/02/04/get-url-for-area-controller-action-from-a-view-rendering

person Jan Bluemink    schedule 03.06.2015

URL по умолчанию: http://ipf.bulgaria.local/Aboutus.aspx

После нажатия на URL-адрес страницы: http://ipf.bulgaria.local/api/sitecore/Newsfeed?page=2

Ожидаемый URL: http://ipf.bulgaria.local/Aboutus.aspx?page=2< /а>

Может ли кто-нибудь посоветовать мне, как получить ожидаемый URL-адрес и как прочитать «/api/sitecore/Newsfeed»?

В основном вам нужен один и тот же URL-адрес всегда после нажатия на разные страницы с номером страницы, отображаемым в виде строки запроса.

Итак, первое, что вам нужно сделать, это передать модель как

@model PagedList.IPagedList<Type>

Таким образом, от вашего контроллера вы передадите правильный набор данных на основе номера страницы как:

YourList.ToPagedList(pageNumber, pageSize);

Следовательно, каждый раз, когда вам нужно передать номер страницы контроллеру, чтобы соответствующие данные страницы передавались в представление, которое было бы актуальным. Вопрос в том, как узнать номер страницы? Элемент управления постраничным списком дает вам номер страницы, и вы должны использовать его, чтобы передать его как строку запроса и прочитать в контроллере. так что ваша проблема URL будет решена. Надеюсь, это поможет, и для лучшего понимания посмотрите видео: https://www.youtube.com/watch?v=6bKZoKyBlE8

person Imgane5h    schedule 21.06.2015

Несмотря на то, что этот вопрос задавался уже давно, он может быть полезен для тех, у кого все еще возникают проблемы с сгенерированными URL-адресами разбивки на страницы. То, что вы получаете, является маршрутом по умолчанию. Чтобы решить эту проблему, вы можете добавить собственный маршрут и указать на него в коде @Html.PagedListPager.

Но в вашем случае поможет следующее:

@Html.PagedListPager(Model, page => 
LinkManager.GetItemUrl(Sitecore.Context.Item) + "?page=" + page)

Часть LinkManager.GetItemUrl(Sitecore.Context.Item) получит URL-адрес текущего элемента. Таким образом, вы получите URL-адрес «Aboutus.aspx?page=2», как и ожидалось.

person Menderes    schedule 14.06.2017