Usuário com melhor resposta
Error Ajax Jquery não funciona - MVC5

Pergunta
-
Galera Bom Dia,
Eu havia até deixado pra la mas agora não tenho escapatória.
Na minha Modal, eu tenho três Views que vão sendo apresentadas de acordo com cada ação realizada, até ai maravilha.
O problema é o seguinte: A minha página é postada utilizando ajax do jquery, ok, funciona parcialmente, porque, quando os campos obrigatórios são preenchidos vai que é uma maravilha mas quando não os erros Required são apresentados, o load é carregado e a view seguinte é apresentada, e o mesmo se dá para essa nova View.
Eu debuguei e no retorno do ajax não entra no error de jeito algum.
Alguém pode me ajudar?
Meu código:
@model BaseDeDados.Classes.RestaurarSenha @using System.Web.UI.WebControls; <script type="text/javascript"> function EnviarEmail() { $.ajax({ type: 'POST', url: 'EnviarEmailRecuperarSenhaPartial', data: $('form').serialize(), beforeSend: function() { $("#panel").fadeIn(); CallbackPanel.PerformCallback(); //$("#tdCaptchaEmail").fadeOut(); }, complete: function() { $("#tdCaptchaEmail").hide(); }, success: function(response) { debugger; $("#tbConfirmacaoCodigo").show(200); $("#emailMensagem")[0].textContent = "Se " + email + " corresponder ao endereço de email em sua conta, enviaremos um código para você."; $("#lblEmailOculto")[0].textContent = email; }, error: function(response) { debugger; $("#tdCaptchaEmail").show(); $("#tbConfirmacaoCodigo").hide(); } }); } </script> <div style="margin- margin-"> <div id="panel" style="display:none;"> @Html.Action("CallbackPanelPartial") </div> @Html.DevExpress().Label( labelSettings => { labelSettings.ControlStyle.CssClass = "label"; labelSettings.Text = "Email"; labelSettings.AssociatedControlName = "Email"; }).GetHtml() @Html.DevExpress().TextBoxFor(m => m.Email, textBoxSettings => { textBoxSettings.Name = "Email"; textBoxSettings.ClientEnabled = true; textBoxSettings.ControlStyle.CssClass = "editor"; textBoxSettings.Width = Unit.Pixel(400); textBoxSettings.Properties.ValidationSettings.ErrorDisplayMode = ErrorDisplayMode.ImageWithText; textBoxSettings.Properties.ValidationSettings.RequiredField.ErrorText = "O Email é obrigatório."; textBoxSettings.Properties.ValidationSettings.ErrorTextPosition = ErrorTextPosition.Bottom; textBoxSettings.Properties.ValidationSettings.RequiredField.IsRequired = true; textBoxSettings.Properties.ValidationSettings.SetFocusOnError = true; textBoxSettings.Properties.ValidationSettings.RegularExpression.ValidationExpression = @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"; textBoxSettings.Properties.ValidationSettings.RegularExpression.ErrorText = "O Email informado é inválido"; }).GetHtml() </div> <div id="content" style="margin- margin-"> @Html.Action("RestaurarSenhaCaptchaPartial") </div> <div style="margin- margin-"> @Html.DevExpress().Button(settings => { settings.Text = "Enviar Email"; settings.Width = Unit.Pixel(100); settings.Name = "btnEnviarEmail"; settings.ClientSideEvents.Click = "EnviarEmail"; }).GetHtml() </div>
Minha Action:
[AllowAnonymous] [HttpPost] public ActionResult EnviarEmailRecuperarSenhaPartial(RestaurarSenha model) { if (CaptchaExtension.GetIsValid("RestaurarSenhaCaptcha")) { CadastrarCodigoAlteracaoSenha_Repository repository = new CadastrarCodigoAlteracaoSenha_Repository(); // Cadastra o código verificador junto ao usuário no banco de dados string random = repository.CadastrarCodigoAlteracaoSenha(model); this.EnviarEmail(model.Email, random); ViewBag.Email = model.Email.Trim(); ModelState.Clear(); } return View(); }
Imagem do erro:
Help me please.
- Editado Fernando Mamprin segunda-feira, 7 de abril de 2014 17:08
Respostas
-
success:function(response)
{
if(response.IsError)
{
//codigo do erro
}
else
{
//codigo do retorno
}
}
public ActionResult NomeQualquer(int? ActualPage)
{
var model = new SolicitacaoModel();
try
{
using (SolicitacaoAmizadeRepositorio solicitacaoRepositorio = new SolicitacaoAmizadeRepositorio())
{
model.Resultado = solicitacaoRepositorio.Filtrar(IdUsuarioLogado(), ActualPage);
}
if (Request.IsAjaxRequest())
{model.IsError = true;
return Json(model);
}
}
catch (Exception ex)
{
base.GravarLog(ex);
}
return View(model);
}- Marcado como Resposta Fernando Mamprin terça-feira, 8 de abril de 2014 12:27
Todas as Respostas
-
-
-
$.ajax({ type: 'POST', url: '@HTML.Action("EnviarEmailRecuperaSenhaPartial")', data: $('form').serialize(),
Valeu pelo retorno Cesar, mas não funfou...
Tentei @Url.Action e o erro continua.
E mesmo com a Validação do ModelState ele ainda me retorna no success do $ajax.
Alguma outra ideia??
Abraço.
- Editado Fernando Mamprin segunda-feira, 7 de abril de 2014 17:27
-
-
Cesar conforme eu já havia citado eu já tentei @Url.Action e sem sucesso..
O problema maior ai, é que ele não volta para o error e sim para o success.
Como eu "forço" ele voltar no error sem utilizar exception?
Abraço.
- Editado Fernando Mamprin segunda-feira, 7 de abril de 2014 18:26
-
-
Não entendi, sou um tanto quanto noob em $ajax / json ...
Como vou validar uma variavel boleana no success ???
Eu ja tentei vários codigos para adiconar mensagens atraves de json na Controller mas nenhuma funcionou ai larguei mao.
Alguma dica?
-
success:function(response)
{
if(response.IsError)
{
//codigo do erro
}
else
{
//codigo do retorno
}
}
public ActionResult NomeQualquer(int? ActualPage)
{
var model = new SolicitacaoModel();
try
{
using (SolicitacaoAmizadeRepositorio solicitacaoRepositorio = new SolicitacaoAmizadeRepositorio())
{
model.Resultado = solicitacaoRepositorio.Filtrar(IdUsuarioLogado(), ActualPage);
}
if (Request.IsAjaxRequest())
{model.IsError = true;
return Json(model);
}
}
catch (Exception ex)
{
base.GravarLog(ex);
}
return View(model);
}- Marcado como Resposta Fernando Mamprin terça-feira, 8 de abril de 2014 12:27
-
-