MVC 4. ModelState.IsValid toujours retourner vrai
Je ne comprends pas pourquoi ModelState.isValid donnez-moi de toutes les façons. Je mis quelque chose dans l'e-mail renvoie true, et je pùt champ vide, elle renvoie true trop. Ma question ism, que dois-je faire pour retourner true si le champ est vide et rien ne whn j'ai écrit l'e-mail?
J'ai l'affichage suivant du fichier:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div style="padding-top:5px;clear:both;"></div>
<% using (Html.BeginForm()) { %>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Email usuario</legend>
<div class="editor-field">
<%: Html.TextBoxFor(m => m.Email) %>
<%: Html.ValidationMessageFor(m => m.Email) %>
</div>
<input type="submit" value="Enviar Email" />
</fieldset>
<% } %>
<div style="padding-top:5px;clear:both;"></div>
</asp:Content>
Le Contrôleur est:
//
//GET: /Account/EmailRequest
public ActionResult EmailRequest()
{
return View();
}
[HttpPost]
public ActionResult EmailRequest(string email)
{
if (ModelState.IsValid)
{
//save to db, for instance
return RedirectToAction("AnotherAction");
}
return View();
}
Mon modèle de classe est:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
namespace PortalClient.Models
{
public class EmailRequest
{
[Required(ErrorMessage = "required")]
public string Email { get; set; }
}
}
- Si vous modifiez la signature de votre post de l'action de
string email
àEmailRequest model
et ensuite vérifier l'état, quel est le résultat voyez-vous? - [HttpPost] public ActionResult EmailRequest(EmailRequest email) { if (ModelState.IsValid) { // sauvegarde de la db, par exemple return RedirectToAction("AnotherAction"); } return View(); }
- La fonction que tu m'a proposé, j'ai changé de chaîne pour EmailRequest et elle renvoie la valeur null
- Ok j'ai la solution pour le dernier commentaire, j'ai dû ajouter un Modèle dans EmailRequest. Maintenant, il est de travail. Merci.
- J'ai ajouté mon commentaire que la solution, si elle résolu votre problème.
- Salut et bienvenue pour le faire. Pour promouvoir les utilisateurs pour leurs efforts, le traitement de vos messages et de répondre à vos questions, merci de voter et de les marquer répondre.
Vous devez vous connecter pour publier un commentaire.
Modifier la signature de votre post de l'action de
string email
àEmailRequest model
et vérifiez l'état. par exemple,Vous avez besoin de lier un modèle d'affichage de votre point de vue.
Changer votre EmailRequest modèle à plus descriptif:
Obtenir votre méthode d'action pourrait ressembler à quelque chose comme:
De votre post, méthode d'action:
Et puis votre point de vue. S'il vous plaît excusez le ASP.NET MVC 4 code, MVC 2 est préhistoriques 🙂 C'est juste une partie de votre point de vue:
J'espère que cette aide.
vous devez lier votre modèle avec connecteur binder premier à avoir la capacité de chek par Modelstat.IsValid