2011-07-23 20 views
6

Tôi muốn xem dao cạo của tôi để tìm một cái gì đó như thế nàyLàm thế nào để nói với callback Ajax.ActionLink onSuccess mà yếu tố khởi xướng 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" }) 

và javascript của tôi để tìm một cái gì đó như thế này

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

ý tưởng là nếu tôi nhấp vào liên kết A, nó sẽ làm ajax và chuyển đổi lớp trên phần tử đó. Tôi không chắc chắn chính xác làm thế nào để treo nó lên mặc dù. Tôi đang thiếu gì?

Trả lời

7

Trước hết, hãy khắc phục sự cố quá tải Ajax.ActionLink của bạn vì máy tính của bạn sẽ không biên dịch.

Và để vượt qua các thông số bạn có thể làm điều này:

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

và sau đó:

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

Cá nhân tôi không phải là một fan hâm mộ của Ajax.* người giúp đỡ. Tôi sử dụng một cách tiếp cận khác trong đó bao gồm một HTML chuẩn ActionLink:

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

mà tôi kín đáo AJAXify trong một tập tin javascript riêng biệt:

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