Обратные вызовы на Ajax.BeginForm не работают

У меня возникают трудности с тем, чтобы обратные вызовы работали для формы. У меня есть что-то вроде этого:

<script>
function VendorCreated() {
  alert('ok');
}
</script>

@using (Ajax.BeginForm("Create", "Vendor", new AjaxOptions {
    UpdateTargetId = ViewBag.TargetId, 
    HttpMethod = "Post", 
    OnSuccess="VendorCreated",
    })) {

после отправки моя функция никогда не создается. Если я использую:

OnSuccess="alert('ok')"

это работает нормально. Я также пробовал:

OnSuccess="function() { VendorCreated(); }"

но я получаю ошибку времени выполнения. У других возникает эта проблема, но я не нашел решения, см. MVC 3 Razor - Ajax. BeginForm OnSuccess и Ajax.BeginForm OnBegin подтверждения через jquery модальный.

Если я посмотрю на отладчик IE (F12), я не увижу тег script в сгенерированном коде... каков правильный подход?


person ekkis    schedule 05.05.2011    source источник


Ответы (2)


Хорошо, я сузил проблему... приведенный выше код генерируется представлением, которое загружается в DIV в другом представлении с помощью jQuery. Недавно я обнаружил, что могу включить представление в другое представление, используя @Html.Action(), и это, похоже, решает проблему, описанную выше. Теперь я получаю обратные вызовы!

для любого, у кого есть склонность, было бы здорово объяснить, почему одно работает, а другое нет.

person ekkis    schedule 06.05.2011

Вы включаете jquery.unobtrusive.ajax.js на свою страницу?

person Dean North    schedule 06.05.2011
comment
да, иначе я бы вообще не получил обратный вызов (я знаю, потому что раньше он не был включен, поэтому у меня не было обратного вызова... теперь я получаю обратный вызов, но только как указано выше) - person ekkis; 06.05.2011