0

現在、ASP.NET MVC 3 Razor に基づく Web アプリケーションをセットアップしています。主に Ajax によってコンテンツをフェッチします。サイト メニューは mvc サイトマップ プロバイダーによって構築され、Ajax.ActionLink を使用してクリック イベントを作成および接続します。それはすでに魔法のように機能しています。

メニューは共有レイアウトの一部です。レイアウトは、アプリケーションがブラウザーにロードされているときに 1 回だけ使用されます (ランディング ページとしても知られ、現在は「ホーム」と呼ばれるデフォルト コントローラーの「インデックス」)。

デフォルト コントローラは、メニューを含むデフォルト レイアウトのビューを返します。メニューには「ホーム」へのリンクもあります。「ホーム」へのリンク以外のメニュー内のすべてのリンクも、今では魅力的に機能しています。

ただし、ランディング ページへのリンクは、レイアウトの一部であるため、メニューの別のインスタンスを含む Ajax コンテンツを返します。

では、フル ページ リクエスト (ユーザーがブラウザのアドレス行に URL を入力するか、「ホーム」への外部リンクをクリックする) を区別して、フル ビューと内部 ajax リクエストを提供し、部分ビューのみを提供するにはどうすればよいですか? 「ホーム」ページのコンテンツの

ありがとう!

4

1 に答える 1

1

コントローラーでこの拡張メソッドを使用できます: IsAjaxRequest

public ActionResult YourAction()
{
    if (Request.IsAjaxRequest()) 
    {
        return PartialView("PartialViewName");
    }
    else
    {
         return View("ViewName");
    }
}
于 2012-09-17T09:05:37.803 に答える