javascript - 为什么在asp.net core中实现pjax时Request.Headers ["X-PJAX"]总是为空?

标签 javascript jquery ajax asp.net-core pjax

我正在尝试在 asp.net core 中实现 pjax,但 Request.Headers["X-PJAX"] 始终为空。 PJAX 文档是 - https://github.com/defunkt/jquery-pjax

我的_Layout.cs html代码:

<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";
    }
}

我的 Controller 的索引和关于操作:

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"] ""?为什么???

请帮忙。 谢谢

最佳答案

那是因为您正在为 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')

关于javascript - 为什么在asp.net core中实现pjax时Request.Headers ["X-PJAX"]总是为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54266725/

相关文章:

javascript - 如果值包含点,则阻止模式关闭

ajax - 如何实现 cometd ?

ruby-on-rails - rails : Change form action from submit_tag

javascript - knockout 设置下拉值

javascript - 用于输入类型编号的 Angular 8 验证器

javascript - Knockout.js 验证文本框突出显示

javascript - 奇怪的 JavaScript 代码

jQuery 在 div 中插入和删除图像

javascript - JS : How to solve this [object Promise]?

jquery - 为什么子链接不起作用?