为什么 Request.Headers["X-PJAX"] 在 asp.net 内核中实现 pjax 时总是空的?
Why Request.Headers["X-PJAX"] is always empty when implementing pjax in asp.net core?
我正在尝试在 asp.net 核心中实现 pjax,但 Request.Headers["X-PJAX"]
始终为空。 PJAX 文档是 - https://github.com/defunkt/jquery-pjax
我的_Layout.cshtml代码:
<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"]
总是“”?为什么???
请帮忙。
谢谢
那是因为您为 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')
我正在尝试在 asp.net 核心中实现 pjax,但 Request.Headers["X-PJAX"]
始终为空。 PJAX 文档是 - https://github.com/defunkt/jquery-pjax
我的_Layout.cshtml代码:
<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"]
总是“”?为什么???
请帮忙。 谢谢
那是因为您为 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')