1. RenderBody Razor motorunda "ana sayfa" yoktur, bunun yerine paylaşılan görünüm klasörüne "layout" (_Layout.cshtml) adlı bir sayfa yerleştirilir. Bu sayfada, etikette bir ifade göreceksiniz: @RenderBody() Aslında, ana sayfadaki sunucu kontrolüne benzer şekilde çalışır; bu düzen sayfasına dayalı bir görünüm oluşturulduğunda, görünümün içeriği düzen sayfasıyla birleştirilir ve yeni oluşturulan görünümün içeriği, düzen sayfasının @RenderBody() yöntemiyle etiketler arasında render edilir. Bu yöntem parametre gerektirmez ve yalnızca bir kez görünebilir. 2. RenderPage Adından da anlaşılacağı gibi, bu yöntem bir sayfa sunmaktır. Örneğin, bir web sayfasındaki sabit başlık paylaşılan bir görünüm dosyasına ayrı yerleştirilebilir ve ardından bu yöntemle düzen sayfasında şu şekilde çağrılabilir: @RenderPage("~/Views/Shared/_Header.cshtml") Parametrelerle @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") Parametreleri almak için sayfayı arayın: Parametreleri RenderPage() ile geçirin. @PageData["param"] 3. RenderSection Düzen sayfası ayrıca bir bölüm kavramına sahiptir; yani, bir bölüm bir görünüm şablonunda tanımlanmışsa, aşağıdaki şekilde ayrı sunulabilir: @RenderPage("~/Views/Shared/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection("kafa") Elbette, görünümdeki bölümü de tanımlayın, aksi takdirde bir istisna olur: @section baş{
//do
} Eksik bölümlerden kaynaklanan istisnaları önlemek için RenderSection()'a ikinci bir argüman verebilirsiniz: @RenderSection("SubMenu", yanlış) veya @if (IsSectionDefined("SubMenu"))
{ @RenderSection("SubMenu", yanlış)
} else
{ <p>Alt Menü Bölümü tanımlanmamış!</p>
}
4.@Html.Partial Parti, her seferinde kendi TextWriter örneğini oluşturur ve içeriği bellekte önbelleğe taşlar. Son olarak, tüm yazıcı çıktısını bir MvcString nesnesine gönderin Çoğu zaman @{ html.RenderPartial("details") kullanırız; @Html yerine Kısmi RenderPage() ile RenderPartial() arasındaki fark. RenderPage() çağrıları sadece geçmiş verileri iletmek için kullanabilir. RenderPartial() viewdata, model ve diğer verileri kullanabilir. Html.RenderPartial ile Html.RenderAction arasındaki fark Html.RenderPartily, tekrarlayan UserControl'ler için uygundur ve yalnızca modeller aracılığıyla içerik render etmek veya reklamlar için UserControls için kullanılmak yeterlidir. Html.RenderAction önce Denetleyicinin Eylemi yöntemini çağırır; eğer bu UserControl'un veritabanından veri elde etmesi gerekiyorsa (veritabanını Eylem üzerinden okumak), bu yöntem bu zaman için daha uygundur. 5.Html.Partial("MyView") Deneme akışını standart yönlendirme kurallarına uygun olarak MvcHtmlString olarak döndürün. "MyView" görünümünü bir MvcHtmlString olarak render eder. Görünüm arama için standart kuralları takip eder (örneğin, mevcut dizini kontrol et, sonra Paylaşılan dizini kontrol et). Html.RenderPartial("MyView")
Html.Partial() gibi bir şekilde, farkı ise doğrudan sayfaya yazılmış olmasıdır ve önbelleğe girmeden. Html.Partial() ile aynı şeyi yapar, ancak çıktısını doğrudan yanıt akışına yazar. Bu daha verimlidir çünkü görüntü içeriği bellekte tampon tutulmaz. Ancak, yöntem herhangi bir çıktı vermediği için @Html.RenderPartial("MyView") çalışmaz. Çağrıyı bir kod bloğuna sarmanız gerekiyor: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Yollar, dosya adları vb. içeren özel bir görünüm döndürür ve Heml.RenderPartial() gibi doğrudan çıktıları önbelleklemeden sunar. model değişkenleri aktarılabilir. Belirtilen görünümü (görünüm adı yerine yol ve dosya adıyla tanımlanır) doğrudan yanıt akışına sunar, örneğin Html.RenderPartial(). Görünümü ikinci parametre olarak dahil ederek istediğiniz herhangi bir modeli ekleyebilirsiniz RenderPage("MyView.cshtml",MyModel)
Ben tercih ederim
@RenderPage("_LayoutHeader.cshtml")Teslim @{Html.RenderPartial("_LayoutHeader"); }Sadece sözdizimi daha kolay ve daha okunabilir olduğu için. Bunun dışında işlevsellik açısından herhangi bir fark görünmüyor.
|