Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 13486|Yanıt: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Bağlantıyı kopyala]
Yayınlandı 19.07.2015 23:37:53 | | |
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.





Önceki:ASP.NET---- giriş diyalogunu açmak için bir tıklama düğmesi veya bağlantı uygulayın
Önümüzdeki:CheckBoxList'i satırı sarmamak için ayarla
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com