2010-03-03 3 views
6

RenderAction() işlevinin ne yaptığından memnunum. Bununla birlikte, kısmen işlenmiş eylemde verilerin yüklenmesini ve depolanmasını sağlamak istiyorum, böylece her şey bir sayfada olur.ASP.NET MVC - Ajaxified RenderAction

Aşağıdaki durumu düşünün: Makalenin içeriğinin altında "Yorum ekle" bağlantısının bulunduğu bir makalenin ayrıntılarını görüyorum. Tıklandığında, yayının içeriğinin altında bir yorum formu görünecektir. Kullanıcı, yorum kutusunu doldurabilmeli ve verileri yalnızca kısmen oluşturulmuş eylemi bütün görünümünü yenilemeden gönderebilmelidir. Ayrıca görünüm, aynı oturumda eklenecek birkaç yorum sağlamalıdır (birkaç AJAX RenderAction çağrısına);

Bunu başarmanın en iyi yolu hangisidir?

cevap

13

Eylem:

[HttpGet] 
public ActionResult AddComment() 
{ 
    return PartialView(); // presumes partial view is called "AddComment" and needs no model 
          // you know what to do otherwise. 
} 

Görünüm:

<input type="button" value="Add Comment" onclick="addComment()" /> 

JavaScript: temellerini var

function addComment() { 
    $("#comments").append("<div></div>").load("/ControllerName/AddComment"); 
} 

. Bunu istediğiniz kadar karmaşık hale getirebilirsiniz.

+0

Yorum verilerini göndermeye ne dersiniz? Bu, sayfayı yenilemeden makale görünümünde "içeride" olacak mı? – xantrus

+0

Yorumlar verilerini göndermek için, sadece "POST" şeklini eşzamanlı veya zaman uyumsuz olarak gönderin. İsterseniz, yorumunuza göre bir formunuz olabilir. Sayfanın yenilenmesini istemiyorsanız, formu senkronize olmayan bir şekilde "POST" ve sayfayı güncelleyin (düzenleyiciyi kaldırın ve yorumla birlikte bir div ekleyin). –