クリックすると、別のリンクを開くのではなく、ページ全体が更新されることなく同じページで開くハイパーリンクが必要でした。私のコントローラーには次の機能があります
public ActionResult PrivacyPolicy()
{
if (Request.IsAjaxRequest())
{
return PartialView();
}
return View();
}
プログラムを実行してブレークポイントを挿入すると、プログラムが常に代わりにreturn view();
戻ることに気付きますview()
PartialView();
ここにindex.cshtml
コードがあります
@section head{
<script type="text/javascript"
src="@Url.Content("~/scripts/AjaxDemo.js")"></script>
}
@Html.ActionLink("Show the Privacy Policy", "PrivacyPolicy", null, new{id="privacyLink"})
<div id="privacy"></div>
部分ビューの PrivacyPolicy には、テキストがほとんどありません。
そしてAjaxDemo.js
見た目はこんな感じ
$(document).ready(function () {
$('#privacyLink').click(function (event) {
event.preventDefault();
var url = $(this).attr('href');
$('#privacy').load(url);
});
});
プログラムが部分ビューを返さないのはなぜですか? または、なぜajaxリクエストを受け取らないのですか? ブラウザの JavaScript が有効になっている場合、プログラムは同じインデックス ページ (CustomAjax) でリンクを開くべきではありませんか?