Я также искал тот же ответ, но похоже, что события Ajax.BeginForm () .. недостаточно хорошо документированы или нуждаются в дополнительных самостоятельных экспериментах, чтобы узнать, когда вызываются эти события onSuccess и onFailure. Но я получил очень простую и прямую альтернативу, чтобы не беспокоиться о настройке свойств onSuccess и onFailure в AjaxOptions. Скорее, в методе действия вашего контроллера просто вызовите метод javascript onSuccess (), onFailure (), отправив ActionResult как JavaScriptResult. Например,
Public ActionResult Create(FromCollection collection)
{
if(exists == null)
{
//OnSuccess
return JavaScript("OnSuccess();");
}
else
{
//OnFailure
return JavaScript("OnFailure();");
}
}
А тег Ajax.BeginForm должен выглядеть как
<%
using( Ajax.BeginForm( "Create","Mandate", new AjaxOptions())) // see, no OnSuccess and OnFailure here.
{%>
<% } %>
Теперь вам нужно определить методы javascript OnSuccess () и OnFailure () на вашей странице, и это все.
EDIT:
Я думал, что, возможно, OnSuccess () будет вызываться по умолчанию, если с сервера не генерируется исключение. OnFailure () будет вызываться, если с сервера выдается какое-либо исключение. Я еще не тестировал эту концепцию. Если это так, то не рекомендуется отправлять JavaScript ("OnSuccess ();") и JavaScript ("OnFailure ();"); с сервера, потому что это не будет хорошим примером для подражания.