2011-07-23 12 views
6

Benim jilet görünümünün buAjax.ActionLink OnSuccess'a hangi öğeyi ajax başlattığını nasıl söylerim

@Ajax.ActionLink("A", "Buy", new AjaxOptions() { HttpMethod = "Post", OnSuccess = "updateLetter" }, new { id = "letter-A" }) 
@Ajax.ActionLink("B", "Buy", new AjaxOptions() { HttpMethod = "Post", OnSuccess = "updateLetter" }, new { id = "letter-B" }) 
@Ajax.ActionLink("C", "Buy", new AjaxOptions() { HttpMethod = "Post", OnSuccess = "updateLetter" }, new { id = "letter-C" }) 

ve benim javascript gibi bir şeye benzemesini istiyorum:

function updateLetter(letter) 
{ 
    $("#letter-" + letter).toggleClass('selected'); 
} 

ve sınıfı o öğe üzerinde değiştirebilir. Tam olarak nasıl bağlanacağından emin değilim. Neyi kaçırıyorum?

cevap

7

Öncelikle sizinaşırı yüklemenizi kendi kurduğunuz olmayacak şekilde düzeltin. Şahsen ben Ajax.* yardımcıları hayranıyım değilim

function updateLetter(letter) 
{ 
    $("#letter-" + letter).toggleClass('selected'); 
} 

:

@Ajax.ActionLink(
    "A", 
    "About", 
    null, 
    new AjaxOptions { 
     HttpMethod = "POST", 
     OnSuccess = "updateLetter('A')" 
    }, 
    new { 
     id = "letter_A" 
    } 
) 

ve sonra: Ve

Bunu yapabileceğini parametreleri aktarmak için. Ben standart HTML ActionLink oluşur alternatif bir yaklaşım kullanın:

@Html.ActionLink(
    "A", 
    "About", 
    null, 
    new { 
     @class = "letter" 
     id = "letter_A" 
    } 
) 

hangi ayrı javascript dosyasında ben sedasız AJAXify:

$(function() { 
    $('.letter').click(function() { 
     var $letter = $(this); 
     $.post(this.href, function(result) { 
      $letter.toggleClass('selected'); 
     }); 
    }); 
});