Почему Request.Headers ["X-PJAX"] всегда пуст при реализации pjax в ядре asp.net? - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь реализовать pjax в ядре asp.net, но Request.Headers["X-PJAX"] всегда пусто.Документы PJAX: - https://github.com/defunkt/jquery-pjax

Мой HTML-код _Layout.cs:

<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="~/js/jquery.pjax.js"></script>
<script type="text/javascript">
    $(function () {
        // pjax
        $('ul a').pjax('#main')
    })
</script>
</head>

<body>
<ul>
  <li><a href="/" class="current">MAIN PAGE</a></li>
  <li><a href="/Home/About">About</a></li>
</ul>

<div id="main">@RenderBody()</div>
</body>

Мой код страницы _ViewStart.cshtml:

@{
    if (ViewBag.PJAX==true)
    {
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    else
    {
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
}

Индекс МОЕГО контроллера и околодействие:

public IActionResult Index()
    {
        if (string.IsNullOrEmpty(Request.Headers["X-PJAX"]))
            ViewBag.PJAX = false;
        else
            ViewBag.PJAX = true;
        return View();
    }

public IActionResult About()
    {
        if (string.IsNullOrEmpty(Request.Headers["X-PJAX"]))
            ViewBag.PJAX = false;
        else
            ViewBag.PJAX = true;
        return View();
    }

Проблема в том, что я получаю Request.Headers["X-PJAX"] всегда ""?Почему ???

Пожалуйста, помогите.Спасибо

1 Ответ

0 голосов
/ 21 января 2019

Это потому, что вы выбираете пустой контейнер для Pjax. Давайте проверим вашу HTML структуру:

<body>
    <ul>
        <li><a href="/" class="current">MAIN PAGE</a></li>
        <li><a href="/Home/About">About</a></li>
    </ul>
    <div id="main">@RenderBody()</div>
</body>

и вы инициализируете pjax, как показано ниже:

$('ul a').pjax('#main')

Обратите внимание, что #main не является потомком ul.

Чтобы исправить свой код, просто попробуйте:

$(document).pjax('#main')

Или, если вы хотите настроить селекторы, попробуйте следующие примеры:

$(document).pjax('a', '#main')
$(document).pjax('ul a', '#main')
...