2011-08-03 17 views
6

Yapmaya çalışıyorum: Bir kaydı "düzgün" HTTP Sil kullanarak silmeye çalışın.Ajax.ActionLink ile düzgün bir HTTP Silme sorunları

Kontrolör Kodu:

[HttpDelete] 
    public void DeleteRun(int RunId) 
    { 
     repository.RemoveEntry(RunId); 

    } 

Jilet Görünüm:

   @Ajax.ActionLink("Delete","DeleteRun",new {RunId = run.RunId}, 
         new AjaxOptions() { Confirm = "Are you sure you want to delete this entry?", 
              HttpMethod = "DELETE", 
              OnComplete = string.Format("DeleteRunInTable({0})",run.RunId) 

         }) 

JavaScript (ayrı dahil dosyada):

function DeleteRunInTable(RunId) { 
     $("tr[data-runid=" + RunId).remove(); 
} 

Bağlantı actionlink yöntemi yaratıyor:

<a data-ajax="true" data-ajax-complete="DeleteRunInTable(11)" data-ajax-confirm="Are you sure you want to delete this entry?" data-ajax-method="DELETE" href="/Runs/Delete/11">Delete</a> 

Javascript parçasının henüz çalıştığından emin değil, bunun için endişelenmeyin. Bir seferde bir adım atmaya çalışıyorum :). Şimdi sadece geleneksel bir etiket gibi çalışıyor ve bağlantıyı tıklattığımda sadece href'in GET isteğini yapıyor. Tabii ki denetleyicime koyduğum [HTTPDelete] nedeniyle bir 404 hatası alıyorum. Ben web geliştirme için oldukça yeni, bu yüzden javascript veya jquery aynı şeyi yapmak için başka yollar vardır eminim ama ben sadece bu noktada biliyorum ne yapıyorum.

cevap

9

Son zamanlarda kendim yaptığım gibi çalışmam gerekiyordu ve tek yapmam gereken AjaxOptions argümanında HttpMethod belirtmekti.

Ayrıca, sayfada bulunan jquery.unobtrusive-ajax.js komut dosyasına sahip olduğunuzdan emin olmanız gerekir.

+0

Yanıt için teşekkürler ... Aslında onları sildim. İhtiyacı olmadıklarını düşündüm. Ajax.actionlink'in jquery'yi kullanacağını düşündüm. Yanlış mıyım? Çoğulculuğu doğru bir şekilde hatırlarsam K Scott Allen ile videolardan birini izliyordum ve ajax.actionslink'i kullanırken hem microsrosoft ajax betiklerini sildi. Ben oldukça acemi yaşıyorum bu yüzden actionlink belirli durumlarda microsoft ajax betikleri kullanır ve diğer durumlarda bunu yapmaz. Emin değilim :) – coding4fun

+0

Bu benim hatam oldu. Gerekli olmayan microsoft ajax komut dosyaları görünür. Şu ana kadar bilmediğim bir script'i özledim: jquery.unobtrusive-ajax.min.js. Muhtemelen bir sonraki sorumum, bir komut dosyası yerine sayfadan eksik (sadece çalışmıyor): P. – coding4fun

+0

ahh cool, eksik bir senaryo olduğunu hissettim ... sadece doğru olanı değil :) Gelecekte kullanıcıların aynı soruna sahip olması ve doğru okuma yapmaması için cevabımı güncelledim. yorumlar. – lomaxx

4

Aslında basit bir çözüm ... jquery.unobtrusive-ajax.min.js: P eksikti. Gönderiyi burada bırakıyorum ki, yaptığım şeye benzer bir şey yapmaya çalışan herkes mümkün olduğunu bilecek ve jquery & jquery.unobtrusive içerdiğinden emin ol.

Düzenleme: Sadece açıklığa kavuşturmak için ActionLink, MVC3 kullanmadığınız takdirde JQuery ile çalışır, aksi halde microsoft javascript kitaplıklarını kullanır.

İlgili konular