2011-08-30 3 views
0
@Ajax.ActionLink("Pujar", 
        "BidOnSmallAuction", 
        "Auctions", 
        new { id = @item.UniqueIdentifierID }, 
        new AjaxOptions { UpdateTargetId = "divright" + item.UniqueIdentifierID, InsertionMode = InsertionMode.Replace, OnSuccess = "Update" }, 
        new { @class = "btn primary" }) 

예를 들어이 ActionLink를 클릭하면 콜백 후 javacript "Update" 메서드가 호출됩니다.MVC Ajax 콜백에 매개 변수를 지정할 수 있습니까?

이 아약스 링크는 여러 가지 경매에 각각 자체 타이머가 있기 때문에 어떤 경매가 실행되는지 Update 메소드에 알릴 수 있어야합니다.

Update 메서드에 매개 변수를 전달하는 방법을 알려 주시면 나머지 부분을 알아낼 수 있습니다.

감사합니다.


편집 :

//Just for testing purposes. 
function Update(uniqueDivId) { 
    alert(uniqueDivId);  
} 

//And in the view's code: 

@Ajax.ActionLink("Pujar", 
       "BidOnSmallAuction", 
       "Auctions", 
       new { id = @item.UniqueIdentifierID }, 
       new AjaxOptions { UpdateTargetId = "divright" + item.UniqueIdentifierID,    
            InsertionMode = InsertionMode.Replace, 
            OnSuccess = "function() { Update(3); }" }, 
       new { @class = "btn primary" }) 

경고 메시지가 호출되지 않는 : 두 답변의 조언 다음은

, 나는 다음과 같은 실행했습니다. 어떤 아이디어? onsuccess는 자체가 매개 변수가없는 함수를 호출

@Ajax.ActionLink(
    "Pujar", 
    "BidOnSmallAuction", 
    "Auctions", 
    new { id = @item.UniqueIdentifierID }, 
    new AjaxOptions { UpdateTargetId = "divright" + item.UniqueIdentifierID, 
        InsertionMode = InsertionMode.Replace, 
        OnSuccess = "function() { Update(someParam); }" }, 
    new { @class = "btn primary" }) 

있도록하지만, 차례로 그 함수는 매개 변수로 업데이트()를 호출하는 방법을 알고 :

답변

1

당신은 이런 식으로 뭔가를 시도 할 수 있습니다.

... 
new AjaxOptions { UpdateTargetId = "divright" + item.UniqueIdentifierID, 
    InsertionMode = InsertionMode.Replace, 
    OnSuccess = "function() { Update(" + item.UniqueIdentifierID + "); }" }, 
... 

UPDATE :

아, 미안, 행된처럼 보이는 당신은 당신이 예를 들어, (당신이 UpdateTargetId 위해했던 방법과 유사)을 필요로하는 설정에 매개 변수를 문자열 연결을 사용할 수 있어야합니다 어쩌면 함수에 대한 참조를 기대하고 있다고 생각하는 문자열이라는 함수의 이름만을 기대할 수 있습니다.

기존 코드와 동시에 다른 스크립트를 페이지에 동적으로 포함시킬 수 있습니까? 그렇다면, OnSuccess="UpdateProxy" 말을 위하고 다음 동적으로 출력을 변경

<script> 
function UpdateProxy() { 
    Update(/* insert your item.UniqueIdentifierID or other params here */); 
} 
</script> 

당신이 등 UpdateProxy1(), UpdateProxy2()와이 필요하려는 동시에 페이지에 여러 아약스 링크가있는 경우.

+0

이 좋은 충고, 그리고 언뜻보기에이 작동 할 것 같다 시도 할 수 있지만, 불행하게도 업데이트 방법은 콜백에 호출되지 않습니다. 이것은 내 페이지에서 렌더링되는 정확한 HTML입니다 :'data-ajax-success = "function() {Update (3);}"'- 다른 제안 사항이 있습니까? –

+0

내가 생각할 수있는 유일한 다른 제안으로 내 대답을 업데이트했습니다. 내가 사용하고있는 @ Ajax.ActionLink 메소드를 사용하지 않았기 때문에이 문제가 발생하지 않았습니다. 일부 jQuery를 포함하여 내 아약스 물건을 사용하는 경향이 있으므로, 내가하는 일에 대해 걱정하지 않고 완전한 제어권을가집니다. 나를 위해 생성되지 않습니다. – nnnnnn

+0

매력처럼 작동했습니다. 단케! –

0

당신은

OnSuccess = "function() { Update(\"some param\"); }" 
+0

예, 작동하는 것 같지만 콜백 중에 Update 메서드가 호출되지 않습니다. 매개 변수를 연결하지 않고'Update (3) '를 호출 할 때조차도 메소드는 호출되지 않습니다. 어떤 아이디어? –

관련 문제