Views Shared_Layout.cshtml で共有ビューを使用した mvc3 Web アプリがあります。
_Layout.cshtml には、アプリのマスター ページのように機能するマークアップが含まれています。
@using .............
@using ......
<!DOCTYPE html>
<html style="overflow: hidden">
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.min.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("~/Content/themes/metro-light/jquery-ui-1.8.16.custom.css")" rel="stylesheet" type="text/css" />
@RenderSection("CSS", false)
<script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.16.custom.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"> </script>
...... (some other scripts here)
......
</head>
<body style="height: 100%">
<!-- page -->
<div class="page">
<div id="header">
<div id="title">
<img alt="" src="@Url.Content("~/Content/images/Logo.png")"/>@ViewBag.ApplicationName
</div>
<div id="logindisplay">
Welcome <strong>@User.Identity.Name</strong>
</div>
<ul id="menu">
<li>@Ajax.ActionLink("Dashboard", "Index","Dashboard", new {@class = "Map View".Equals(ViewBag.Title) ? "selected" : null},new AjaxOptions { UpdateTargetId = "main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" })</li>
<li>@Ajax.ActionLink("Map View", "Index", "Map", new { @class = "Map View".Equals(ViewBag.Title) ? "selected" : null },new AjaxOptions { UpdateTargetId = "main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" })</li>
<li>@Ajax.ActionLink("Settings", "Index", "Settings", new { @class = "Settings".Equals(ViewBag.Title) ? "selected" : null }, new AjaxOptions { UpdateTargetId = "main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" })</li>
<li>@Ajax.ActionLink("About", "Index", "AppInfo", new { @class = "About".Equals(ViewBag.Title) ? "selected" : null }, new AjaxOptions { UpdateTargetId = "main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" })</li>
</ul>
</div>
<div id="main">
@RenderBody()
</div>
</div>
<!-- footer -->
<div id="footer">
</div>
<form id="__ajaxAntiForgeryForm" action="#" method="post">@Html.AntiForgeryToken()</form>
</body>
</html>
基本的に、上記のコードから、「メイン」divをコントローラーが返すものに置き換えています
new AjaxOptions { UpdateTargetId = "main", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" }
これが私のコントローラーです(特別なものはありません)
ダッシュボードコントローラー
[UiException]
public ActionResult Index()
{
return View();
}
マップコントローラー
[UiExceptionAttribute]
public ActionResult Index()
{
return View();
}
ページを読み込んで「ダッシュボード」または「マップ ビュー」のリンクをクリックすると、ページ全体がちらつき、更新されます。@Ajax.ActionLink はページ全体を更新するのではなく、「メイン」の div のみを更新します。コンテンツ セクションのみをリフレッシュする ajax のような動作をさせる方法はありますか? 誰でも助けることができますか?ありがとう!