SORU
5 NİSAN 2009, Pazar


RenderAction RenderPartial

Anladığım kadarıyla Html.RenderPartial ASP.NET MVC sürümünde bulunan ve Microsoft.Web.Mvc.ViewExtensions MVC Vadeli işlemler dahil HTML.RenderAction arasında büyük bir fark var.

Ben başvurum hakkında birçok sayfa Çok bestelenmiş "(bir çeşit) her biri kendi özel işlevi olan." widget

Geldi bana daha mantıklı kullanmak için RenderAction yöntem olarak her widget diye bir özel kontrolör sorumlu alıyorum farklı veri işleme ve özel bir görünüm (as karşı olan bir bilgisayar ve bir benzersiz görünümü modele geçmek RenderPartial yardımcı işlemek için görünümleri).

Testlerden gibi bir denetleyicisi Oluşturmak eylem bir yönteme işaret eden bir forma sahip yaptım:

 <% using (Html.BeginForm("Create", "Message", FormMethod.Post, 
     new { id = "messageCreateForm" })) {%>

ve arıyorum

 <% Html.RenderPartial("MessageForm",new MessageDTO()); %>

render correcly bir:

<form id="messageCreateForm" method="post" action="/Message/Create">

ama RenderAction ile aynı eşdeğer görünümü işlemek için denetleyicisinde MessageForm eylem bir yöntem kullanılarak, yani () işlemek olmaz ile correcly:

 <% Html.RenderAction<MessageController>(m => m.MessageForm()); %>

içinde işlerler:

<form id="messageCreateForm" method="post" action="">

Eylem boş olduğunu unutmayın.

Bu RenderAction yardımcı kullanmak için doğru yol olduğunu ve bu gibi durumlarda kullanmak doğru mu?

GÜNCELLEME: Aslında _MessageForm kısmi görünümü yeniden adlandırma işler form correcly.

CEVAP
6 EKİM 2009, Salı


Çok eski ama cevapsız sorular : listemin içine atladı)

RenderAction RenderPartial arasında büyük bir fark var. RenderPartial bir hale getirecektirViewaynı denetleyicisi (ya da paylaşılan bir), RenderAction aslında gerçekleştirmek koca bir döngünün MVC: olacak örneğini denetleyicisi (denetleyici herhangi bir söz değil, sadece mevcut), yürütülür eylem, ve sonra geri dönmek ve render sonucu.

RenderPartial inclusion bile farklı bir belirtin yok ama aynı model paylaşacaktır. bir daha benzer

RenderAction çok daha karmaşık (ve belki istenmeyen yan etkiler, Bu yüzden onlar değil, bu işlev mevcut Sürüm 1 -- başlangıçta boş olarak deneysel bir özellik).

Eğer widget varsa bu durumda yani, TAMAM her ikisini de kullanmak. Widget karmaşıklığına bağlıdır. Eğer bir DB den veri almak, bir şey karmaşık, vb yapması gereken biri varsa... o zaman muhtemelen RenderAction kullanmalısınız.

Haber denetleyicisi haber nesneler sorumlu var. Ana Sayfa koymak için en son haberleri ile bir blok kılabilecek Blok bir eylem, ben yarattım. Bu mükemmel bir örnek, RenderAction için benim görüşüme göre, bir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Pocketnow

    Pocketnow

    14 EKİM 2007