【发布时间】:2013-06-28 16:45:05
【问题描述】:
我不明白为什么 ModelState.isValid 会以各种方式给我。我在电子邮件中设置了一些返回 true 并且我输入了空字段,它也返回 true。我的问题是,当我写电子邮件时该字段为空且没有任何内容时,我必须做什么才能返回 true?
我有下一个视图文件:
<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>
控制器是:
//
// 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();
}
我的模型类是:
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; }
}
}
【问题讨论】:
-
如果您将发布操作的签名从
string email更改为EmailRequest model,然后检查状态,您会看到什么结果? -
[HttpPost] public ActionResult EmailRequest(EmailRequest email) { if (ModelState.IsValid) { // 保存到数据库,例如 return RedirectToAction("AnotherAction"); } 返回视图(); }
-
你建议我的函数我从字符串更改为 EmailRequest,它返回 null
-
好的,我得到了最后一条评论的解决方案,我必须在 EmailRequest 中添加模型。现在它正在工作。谢谢。
-
我添加了我的评论作为解决方案,如果它解决了您的问题。
标签: c# asp.net-mvc asp.net-mvc-4 modelstate