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