2014-11-26 3 views
0

Я пытаюсь добавить разбиение на страницы с бесконечной прокруткой на мое веб-приложение. У меня просто одна проблема, которая заключается в том, что мне нужно передать значение методу действия контроллера для извлечения следующей страницы в последовательности.Передача значения из PartialView в parent View

Действие выглядит следующим образом:

public ActionResult Index(string nextCursorMark) 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     var page = GetPagedArticles(15, "*:*", nextCursorMark); 
     return PartialView("_ArticlesPartial", page); 
    } 
    else 
    { 
     var page = GetPagedArticles(30, "*:*"); 
     return View(page); 
    } 
} 

page содержит строку, которая мне нужно передать. Когда визуализируется представление, значение добавляется из этого представления с помощью javascript, что означает, что следующий запрос (частичный), конечно, правильно выбран. Проблема в том, что все последующие запросы возвращают одно и то же значение, так как я не могу понять, как передать значение (используя MVC или javascript).

Скрипт добавлен в View (большая часть кода опущена):

@section scripts { 
<script type="text/javascript"> 
    $(window).scroll(function() { 
     if ($(window).scrollTop() == $(document).height() - $(window).height() && !hasData && !inProgress) { 
      $.ajax("@Url.Action("Index", "Articles", new { nextCursorMark = Model.CurserMark })", { 
       ... 
      }}); 
</script> 
} 

ответ

1

Бритва обрабатывается на сервере перед отправкой в ​​представлении, так

$.ajax("@Url.Action("Index", "Articles", new { nextCursorMark = Model.CurserMark })" 

оценивает в URL для '/Articles/Index/# где # - начальный значение CursorMark при первой загрузке страницы.

Вам необходимо включить переменную, можно увеличить с каждым вызовом

var cursor = '@Model.CursorMark'; // initial value 
.... 
$.ajax('@Url.Action("Index", "Articles")', { newCursorMark: cursor } { 
    // update the DOM 
    .... 
    cursor += someIncrement; // increment the value for the next call 
}}); 
+0

Да, я знаю. Проблема заключается в том, что значение представляет собой какое-то хешированное строковое значение, которое автоматически генерируется всякий раз, когда запрашивается новая страница. К сожалению, это не так просто, как приращение этой переменной. Можно ли обновить представление без добавления всей страницы к себе с новыми данными вместо того, чтобы возвращать частичный вид? – thilemann

+0

Нет, потому что вам нужно передать обновленное значение для 'newCursorMark' (в противном случае его просто повторится одно и то же представление). Зачем нужно хэшировать строку? Как это происходит? Когда генерируется? –

+0

Это строка, сгенерированная SOLR как указатель на следующую последовательность данных в ее индексе. Это самый эффективный способ сделать глубокую разбивку на страницы с помощью SOLR. – thilemann

Смежные вопросы