MVC3は、コントローラの操作から戻ったときにいくつか特別なことを行います。コントローラーから部分ビュー結果(return PartialView();
)を返すと、「フルビュー」を参照することができ、そのビューのレイアウトファイルは無視され、内容部分のみが返されます。あなたのケースでは、リクエストがAJAXリクエストかどうかをチェックすることができます。これに基づいて、要求されたURLの部分ビューの全体像を返します。この2つのファイルを変更するだけのMVC3のデフォルトの「インターネットサイト」テンプレートでこれを試してみてください。
まず、あなたのホーム/インデックス表示:
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
@Html.ActionLink("This is AJAXy", "About", "Home", null, new{@class="ajax"})
</p>
<div id="AjaxContent"></div>
<script type="text/javascript">
$(document).ready(function() {
$(".ajax").click(function (e) {
e.preventDefault();
alert("clicked");
$.ajax({
url: this.href,
dataType: 'html',
success: function (data) {
$('#AjaxContent').html(data);
alert('Load was performed.');
}
});
});
});
</script>
私はアクションホーム/へのリンクをAJAXingています。デフォルトのテンプレートでは、テストのために上部のコーナーにあるデフォルトのテンプレートナビゲーションセクションに依然として完全なリクエストリンクがあります。
次に、System.Web.Mvcを使用して、ホームコントローラー
。クリックして今すぐ
namespace MvcApplication6.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
if(Request.IsAjaxRequest())
{
return this.PartialView();
}
return View();
}
}
}
、唯一のこれら二つのものがデフォルトのプロジェクトテンプレートから変更して、メインナビゲーション内のリンクについて、完全なリクエストと表示についてのページのページタイトルとの完全な、あなたの頭の情報のすべてを行いますただし、ホーム/インデックスビューでajaxリンクをクリックすると、その情報のAJAXリクエストが実行されます。 AjaxReponse divには[About]ビューのHTMLだけが表示され、その他のもの(レイアウトなど)は表示されません。
このような実装はあなたのSEOに役立つばかりでなく、JavaScriptを使用していない人々もあなたのサイトを使い、完全に機能することができます。あなたは上記の例を(少なくとも私のテスト中).LOAD機能を使用することはできません
EDIT
。理由:.loadは、AJAX要求であることを識別するためにX-Requested-Withヘッダーを設定しません。回避策がありますが、あなたが使用していたことに気付きました。あなたがこのルートに進むことを選択した場合、旅行の危険につながる可能性があると考えました。
これを確認してください...https://developers.google.com/webmasters/ajax-crawling/docs/learn-more – Trent
あなたの行動に[ChildActionOnly]属性を使用していますか? –
いいリンク、ありがとう。 –