@using (Ajax.BeginForm(\"Create\", \"Vendor\", new AjaxOptions { UpdateTargetId = ViewBag.TargetId, HttpMethod = \"Post\", OnSuccess=\"VendorCreated\", })) { после отправки моя функция никогда не создается. Если я использую: OnSuccess=\"alert('ok')\" это работает нормально. Я также пробовал: OnSuccess=\"function() { VendorCreated(); }\" но.","answerCount":2,"dateCreated":"2011-05-05","acceptedAnswer":{"@type":"Answer","text":"Хорошо, я сузил проблему... приведенный выше код генерируется представлением, которое загружается в DIV в другом представлении с помощью jQuery. Недавно я обнаружил, что могу включить представление в другое представление, используя @Html.Action(), и это, похоже, решает проблему, описанную выше. Теперь я получаю обратные вызовы! для любого, у кого есть склонность, было бы здорово объяснить, почему одно работает, а другое нет."}}}
Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: ekkisОтветов: 2

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

<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 в сгенерированном коде... каков правильный подход?

ajaxrazorcallback

Ответы

Ответ 1 · ekkis

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

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

Ответ 2 · Dean North

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы