Могу ли я дать обратному вызову MVC Ajax параметр? - PullRequest
0 голосов
/ 31 августа 2011
   @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, после обратного вызова будет вызван метод javascript "Update".

Так как эта ссылка 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" })

Предупреждение не вызывается. Есть идеи?

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Вы можете попробовать что-то вроде этого:

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

Так, что OnSuccess сам вызывает функцию, у которой нет параметров, но эта функция, в свою очередь, знает, как вызывать Update () с параметрами. Вы должны иметь возможность использовать конкатенацию строк для настройки параметров по мере необходимости (аналогично тому, как вы это делали для UpdateTargetId), например:

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

UPDATE:

О, извините, похоже, что для каждого случая, когда он ожидает только имя функции в виде строки, где я думал, что он ожидает ссылку на функцию.

Можете ли вы динамически включать другие скрипты на страницу одновременно с существующим кодом? Если это так, измените вышеприведенное значение на «OnSuccess="UpdateProxy"», а затем динамически выведите следующее:

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

Если у вас есть несколько ссылок ajax на странице одновременно, вам потребуется UpdateProxy1(), UpdateProxy2() и т. Д.

0 голосов
/ 31 августа 2011

Не могли бы вы попробовать

OnSuccess = "function() { Update(\"some param\"); }"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...