Y a-t-il un problème en utilisant @Html.ValidationSummary()
dans un formulaire Ajax.BeginForm
?@ Html.ValidationSummary() ne fonctionne pas dans Ajax.BeginForm
J'ai le scénario suivant et je ne peux pas obtenir de validation pour les champs obligatoires. Le formulaire est juste posté et aucune erreur n'est levée non plus.
est la vue:
@using (Ajax.BeginForm("Register", "Account", new AjaxOptions { HttpMethod = "POST", OnSuccess = "closeDialog('RegistroUsuario')" }))
{
@Html.ValidationSummary()
<fieldset>
<legend>Cadastro novo Usuário</legend>
<table id="changePassword">
<tr>
<td class="smallField">Username:</td>
<td>@Html.TextBoxFor(m => m.UserName)</td>
</tr>
<tr>
<td>Password:</td>
<td>@Html.PasswordFor(m => m.Password)</td>
</tr>
<tr>
<td>Repetir Senha:</td>
<td>@Html.PasswordFor(m => m.ConfirmPassword)</td>
</tr>
<tr>
<td>Email:</td>
<td>@Html.TextBoxFor(m => m.Email)</td>
</tr>
<tr>
<td>Pergunta Secreta:</td>
<td>@Html.TextBoxFor(m => m.SecretQuestion)</td>
</tr>
<tr>
<td>Resposta:</td>
<td>@Html.TextBoxFor(m => m.SecretQuestionPassword)</td>
</tr>
<tr>
<td>Ativo:</td>
<td><input type="checkbox" name="status" id="status" value="Ativo"></td>
</tr>
</table>
</fieldset>
<input type="submit" value="Criar Usuário" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button-link"/>
}
Thats le contrôleur:
//
// POST: /Account/Register
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
MembershipProvider mp = Membership.Provider;
MembershipCreateStatus Status;
// Tenta registrar o usuário
try
{
//Verifica se usuário deve estar ativo ou não no sistema
if (String.IsNullOrEmpty(Request.Form["status"]))
{
model.Active = false;
}
else
{
model.Active = true;
}
//Cria o usuário
MembershipUser newUser = mp.CreateUser(model.UserName, model.Password, model.Email, model.SecretQuestion, model.SecretQuestionPassword, model.Active, Guid.NewGuid(), out Status);
if (newUser == null)
{
/**/
}
else
{
return RedirectToAction("Index", "Home");
}
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Et le modèle:
public class RegisterModel
{
[Required]
[Display(Name = "Usuário")]
public string UserName { get; set; }
[Required]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "A {0} deve ter no mínimo {2} caracteres.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Senha")]
public string Password { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Repetir Senha")]
[Compare("Password", ErrorMessage = "As senhas não coincidem")]
public string ConfirmPassword { get; set; }
[Required]
[Display(Name = "Pergunta Secreta")]
public string SecretQuestion { get; set; }
[Required]
[StringLength(100, ErrorMessage = "A {0} deve ter no mínimo {2} caracteres.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Senha Pergunta Secreta")]
public string SecretQuestionPassword { get; set; }
[Required]
[Display(Name = "Ativo")]
public bool Active { get; set; }
}
Est-ce que je manque somenthing?
Eh bien, qu'est-ce que votre débogueur vous dit? Est-ce que vous arrivez au 'return View (model)' du tout? Le résumé semble OK où il est. –