2011-07-23 10 views
6

मैं अपनेAjax.ActionLink OnSuccess कॉलबैक को कैसे बताना है कि किस तत्व ने AJAX शुरू किया था

@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" }) 

और मेरी जावास्क्रिप्ट को इस

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

जैसे कुछ देखने के लिए अपने रेज़र दृश्य को देखना चाहता हूं, यह विचार यह है कि यदि मैं ए लिंक पर क्लिक करता हूं, तो यह AJAX करेगा और उस तत्व पर वर्ग टॉगल करें। मुझे यकीन नहीं है कि इसे कैसे हुक करना है। मैं क्या खो रहा हूँ?

उत्तर

7

सबसे पहले अपने Ajax.ActionLink ओवरलोड को ठीक करें क्योंकि आपका संकलन नहीं होगा।

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

और उसके बाद:

और मानकों आप ऐसा कर सकता है पारित करने के लिए

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

व्यक्तिगत तौर पर मैं Ajax.* सहायकों के एक प्रशंसक नहीं हूँ। मैं एक वैकल्पिक दृष्टिकोण एक मानक HTML ActionLink के होते हैं जो का उपयोग करें:

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

जो मैं भैया एक अलग JavaScript फ़ाइल में AJAXify:

$(function() { 
    $('.letter').click(function() { 
     var $letter = $(this); 
     $.post(this.href, function(result) { 
      $letter.toggleClass('selected'); 
     }); 
    }); 
}); 
संबंधित मुद्दे