Alt şablonu oluşturmanın uygun yolu nedir?
Ve fark nedir? İkisi de benim için çalışıyor gibi görünüyor.
Ve neden @Html.RenderPartial()
artık çalışmıyor?
Yanıtlar:
Html.Partial("MyView")
"MyView" görünümünü bir MvcHtmlString
. Görünüm araması için standart kuralları izler (yani mevcut dizini kontrol edin, ardından Shared
dizini kontrol edin ).
Html.RenderPartial("MyView")
Çıktısını Html.Partial()
doğrudan yanıt akışına yazması dışında aynı şeyi yapar . Bu daha etkilidir, çünkü görüntüleme içeriği hafızaya alınmaz. Ancak, yöntem herhangi bir çıktı döndürmediğinden @Html.RenderPartial("MyView")
çalışmayacaktır. Onun yerine bir kod bloğu içinde çağrıyı kaydırmak zorunda: @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Belirtilen görünümü (görünüm adı yerine yol ve dosya adıyla tanımlanan) doğrudan yanıt akışına, örneğin Html.RenderPartial()
. Görünüme istediğiniz modeli ikinci bir parametre olarak ekleyerek tedarik edebilirsiniz.
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs@{Html.RenderPartial("MyView");}
RenderPage
? Belirli bir sorgu parametresi belirterek farklı bir sayfayı iç içe yerleştirmek istiyorum, bu da o sayfadaki verileri filtreleyecek ve ayrıca kendi düzenini kaldıracak.
tercih ederim
@RenderPage("_LayoutHeader.cshtml")
Bitmiş
@{ Html.RenderPartial("_LayoutHeader"); }
Sadece sözdizimi daha kolay ve daha okunaklı olduğu için. Bunun dışında işlevsellik açısından herhangi bir farklılık görünmüyor.
DÜZENLEME: RenderPartial'ın bir avantajı, tüm yolu veya dosya uzantısını belirtmenize gerek olmamasıdır, ortak yerleri otomatik olarak arayacaktır.
RenderPage
sözdizimi nedeniyle de katılıyorum .
RenderPartial yöntem diğer birçok yardımcı yöntemler gibi HTML biçimlendirme döndürmez. Bunun yerine, içeriği doğrudan yanıt akışına yazar, bu yüzden onu noktalı virgül kullanarak tam bir C # satırı olarak adlandırmalıyız.
Bu, oluşturulan HTML'yi kısmi görünümden arabelleğe almaktan biraz daha etkilidir, çünkü yine de yanıt akışına yazılacaktır. Daha tutarlı bir sözdizimi tercih ederseniz , RenderPartial yöntemiyle tam olarak aynı olan , ancak bir HTML parçası döndüren ve @ Html.Partial ("Ürün", p) olarak kullanılabilen Html.Partial yöntemini kullanabilirsiniz .
@RenderPages()
Yukarıdakiler ASP.NET MVC'de çalışmaz. Yalnızca Web Sayfalarında çalışır.
@Html.Partial("_Footer")
Yukarıdakileri ASP.NET MVC'de kullanmanız gerekecektir.