クリックすると、別のリンクを開くのではなく、ページ全体が更新されることなく同じページで開くハイパーリンクが必要でした。私のコントローラーには次の機能があります
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) でリンクを開くべきではありませんか?