SORU
15 Mart 2011, Salı


Ajax ile yüklendiğinde düzeni sayfasını olmadan bir görünüm oluşturmak için Nasıl?MVC 3:

Progressive Enhancement hakkında öğreniyorum ve görüşlerini AJAXifying ilgili bir sorum var. MVC 3 proje ile düzeni bir sayfa, viewstart bir sayfa ve iki sade görünümleri var.

Viewstart sayfa Görünümleri kök klasöründe ve böylece tüm görünümler için geçerlidir. Tüm görünümler düzeni sekme için _Layout.cshtml kullanması gerektiğini belirtir. Düzen iki sayfa gezinme bağlantıları içeren, her görünüm için. Bağlantılar @Html.ActionLink() sayfa için kendilerini kılıyor.

Şimdi jQuery eklendi ve bu bağlantılar kaçırmak ve Ajax sayfa dinamik olarak kendi içerik yüklemek için kullanmak istiyorum.

<script type="text/javascript">
    $(function () {
        $('#theLink').click(function () {
            $.ajax({
                url: $(this).attr('href'),
                type: "GET",
                success: function (response) {
                    $('#mainContent').html(response);
                }
            });
            return false;
        });
    });
</script>

Aklıma iki yolu bunu yapmak için vardır, ama özellikle birini istemem

1) işlenmiş tüm görünümün içeriğini alıp, kısmi bir görünüm yerleştirin, ana görünümündeki kısmi görünümü arasın o zaman ben. Bu şekilde, denetleyici Request.IsAjaxRequest() kullanarak, View() iade veya PartialView() veya istek bir Ajax isteği olup olmadığına göre iade edebilirim. Sonra Düzen sayfasını kullanın çünkü Ajax isteği için normal görünüme geri dönmek istemiyorum ve düzeni sayfasının ikinci bir kopyası enjekte ederdim. Ancak, bana standart istekleri ALMAK için onları @{Html.RenderPartial();} sadece boş görünümleri oluşturmak için zorlar çünkü bu hoşuma gitmiyor.

    public ActionResult Index()
    {
        if (Request.IsAjaxRequest())
            return PartialView("partialView");
        else
            return View();
    }

Sonra Dizin.cshtml bunu yapmak için:

@{Html.RenderPartial("partialView");}

2) _viewstart düzenine atamasını Kaldır ve istek Ajax olmadığında manuel olarak belirtin.

    public ActionResult Index()
    {
        if (Request.IsAjaxRequest())
            return View(); // Return view with no master.
        else
            return View("Index", "_Layout"); // Return view with master.
    }

Herkes daha iyi bir önerisi olan var mı? Bir şekilde düzen sayfası olmadan bir görünüm dönmek var mı? Çok daha kolay, açıkça söyle "düzeni vardır yoksa bir ajax isteği ise" eğer ajax. bir şey değilse açıkça düzen vardır ki daha olurdu

CEVAP
15 Mart 2011, Salı


~/Views/ViewStart.cshtml:

@{
    Layout = Request.IsAjaxRequest() ? null : "~/Views/Shared/_Layout.cshtml";
}

kumanda:

public ActionResult Index()
{
    return View();
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Animation Workshop

    Animation Wo

    8 NİSAN 2010
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • WhtButterflyLiz

    WhtButterfly

    14 NİSAN 2008