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.

InformationsquelleAutor Dave | 2013-07-01