2013-07-26 17 views
19

Başlık olarak, kısmi görünümde bir bölüm tanımlamak istiyorum.ASP MVC Kısmi Görünümde Bölümü Tanımlayın

Kontrolör:

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

public ActionResult PartialTest() 
{ 
    return PartialView("_PartialTest"); 
} 

Test.cshtml:

@{ 
    ViewBag.Title = "Test"; 
} 

<h2>Test</h2> 

@Html.Action("PartialTest") 

_PartialTest.cshtml şu şekildedir: Ben ile test ettik

Kodum olan

<p>partial Test</p> 

@section scripts { 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      alert("Test"); 
     }); 
    </script> 
} 

Bölüm 012'yi yerleştirme Test.cshtml içindedüzgün çalışıyor, bu nedenle sorun düzende değil.

Bunu nasıl yapacağını bilen var mı?

+0

Evet, aradığım şey buydu :) –

+0

Bu benim için hile yaptı: http://stackoverflow.com/questions/7556400/injecting-content-into-specific-sections-from-a -partial-view-asp-net-mvc-3-with # 15971504 – Schalk

cevap

33

Kısmi görünümler, @section etiketini desteklemiyor. Kısmi görünümü referans alan görünümde eklemelisiniz. Daha fazla bilgi için şu soruya bakın: Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine. Kısmen, kısmi görünümün değil, kısmi bir bakış açısına atıfta bulunan ana görüşün, Javascript'in dahil edilmesinden sorumlu olması gerçeğine iner. Bu soruyu biliyorum

+19

Bu sorunun cevabı (desteklenmiyor) olsa da, bu soru yalvarır, neden kısmi görüşler çok sınırlı? Bazı uygulamalarda, kısmi görünüm kullanmaktan "widget'lar" oluşturma ve "widget" yaratmanın başka bir yolu nedir? Çok sınırlı olduğu ve amacını tamamen ortadan kaldıran ebeveyn görüşüne büyük ölçüde bağlı olduğu gerçeğinin dışında. MVC tıraş makinasında kullanıcı kontrolüne (web formları) eşdeğer var mı? – Keith

+0

Bunun eski bir soru olduğunu biliyorum, ancak tam olarak bu çözümü bulmaya çalışıyorum: 'widget' özel betiğini/jquery'i oluşturulduğu görünümde eklemek mi istiyorsunuz? İyi bir çözümü olan var mı? –

+0

Herhangi bir modülden arayabileceğiniz bir komut dosyası yöneticisi/uzantısı yazmak ve ardından ebeveyn/ana görünümünüzde benzersiz/ayrı komut dosyası etiketlerini yazdırmak için bir yöntem yazmak oldukça kolay olurdu. –

5

süper tarihli, ama (Ben gibi) orada herkes için kim hala merak olabilir:

Aslında sizin kısmi görünümleri @section scripts { } bölümünü değiştirerek bu sorunu gidermek alabilirsiniz Bu:

@using (Html.BeginScriptContext()) 
{ 
    Html.AddScriptBlock(
     @<script type="text/javascript"> 
     //rest of script 
    ); 
} 

Bu, kısmi görünümde bir komut dosyası var ve biliyim benzeri bir yapıya ulaşmak için izin verecektir. Bu yardımcı olur umarım!

+0

Bunun bir üçüncü taraf paket ForLoop.HtmlHelpers tarafından sağlanan işlevselliğe atıfta bulunduğunu düşünüyorum (https://www.nuget.org/packages/Forloop.HtmlHelpers/) –

İlgili konular