Non capisco perché ModelState.isValid mi dia in tutti i modi. Ho impostato qualcosa nella e-mail restituisce true e ho campo vuoto, restituisce anche vero. La mia domanda è, che cosa devo fare per restituire true quando il campo è vuoto e nulla in cui ho scritto l'e-mail?MVC 4. ModelState.IsValid restituisce sempre true
Ho la successiva visualizzazione del file:
<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>
il controllore è:
//
// 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();
}
mia classe del modello è:
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; }
}
}
Se si modifica la firma della vostra azione post dal 'stringa email' a' EmailRequest model' e poi controlla lo stato, quale risultato vedi? –
[HttpPost] pubblico ActionResult EmailRequest (EmailRequest e-mail) { se (ModelState.IsValid) {// salva nel db, per esempio ritorno RedirectToAction ("AnotherAction"); } return view(); } – Dave
La funzione come mi hai suggerito Ho cambiato da stringa a EmailRequest e restituisce null – Dave