Validation .Net MVC ModelState.IsValid始终返回true
ModelState.IsValid始终返回true 代码: user.csValidation .Net MVC ModelState.IsValid始终返回true,validation,model-view-controller,modelstate,Validation,Model View Controller,Modelstate,ModelState.IsValid始终返回true 代码: user.cs public class User { public int UserID { get; set; } public string Username { get; set; } public string FirstName { get; set; } [Required] public string LastName { get; set; } } HomeContro
public class User
{
public int UserID { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
HomeController.cs
public ActionResult SaveUser(User user)
{
if (ModelState.IsValid)
{
//create DBContext object
using (var dbCtx = new UsersDbEntities())
{
dbCtx.Entry(user).State = EntityState.Modified;
dbCtx.SaveChanges();
}
return View("ShowUser", user);
}
return View("EditUser", user);
}
Register.cshtml
@model TrainingWebsite.Models.User
<div id="myForm">
@using (Html.BeginForm("RegisterUser", "Home", FormMethod.Post))
{
if (@ViewBag.Message != null)
{
<div style="border: 1px solid red">
@ViewBag.Message
</div>
}
<table>
<tr>
<td>@Html.LabelFor(a => a.Username)</td>
<td>@Html.TextBoxFor(a => a.Username, new { id = "id_username" })</td>
<td>@Html.ValidationMessageFor(a => a.Username)</td>
</tr>
<tr>
<td>@Html.LabelFor(a => a.FirstName)</td>
<td>@Html.TextBoxFor(a => a.FirstName, new { id = "id_firstName" })</td>
<td>@Html.ValidationMessageFor(a => a.FirstName)</td>
</tr>
<tr>
<td>@Html.LabelFor(a => a.LastName)</td>
<td>@Html.TextBoxFor(a => a.LastName, new { id = "id_lastName" })</td>
<td>@Html.ValidationMessageFor(a => a.LastName)</td>
</tr>
</table>
@model TrainingWebsite.Models.User
@使用(Html.BeginForm(“RegisterUser”、“Home”、FormMethod.Post))
{
如果(@ViewBag.Message!=null)
{
@查看包。留言
}
@LabelFor(a=>a.Username)
@TextBoxFor(a=>a.Username,新的{id=“id\u Username”})
@Html.ValidationMessageFor(a=>a.Username)
@LabelFor(a=>a.FirstName)
@TextBoxFor(a=>a.FirstName,新的{id=“id_FirstName”})
@Html.ValidationMessageFor(a=>a.FirstName)
@LabelFor(a=>a.LastName)
@TextBoxFor(a=>a.LastName,新的{id=“id\u LastName”})
@Html.ValidationMessageFor(a=>a.LastName)
ModelState.IsValid为true,即使姓氏字段为空,但却是必填字段
任何帮助都将不胜感激。提前谢谢
David一件需要快速检查的事情是,在您发布的两种操作方法中,同一名称空间中的
用户
模型:保存用户
和注册用户
?我认为屏幕截图中的用户
应该来自实体框架模型,该模型可能没有[必需]
attribute?用户模型位于名称空间“TrainingWebsite.Models”中,控制器方法位于名称空间“TrainingWebsite.Controllers”中,我已将using directive“using TrainingWebsite.Models;”添加到控制器类中,但它作为未使用的指令变灰。这是否与我的问题有关?您显然有两个模型名称User
和RegisterUser()
方法中的名称与视图中的名称不同(并且将具有ConfirmPassword
等属性的对象保存到数据库是没有意义的。请将视图中模型的名称更改为(例如)UserViewModel
或RegisterViewModel
因此,清除视图模型并避免冲突(它还应位于单独的文件夹中,而不是您的模型文件夹中)您必须阻止空字符串。一件快速检查的事情是,在您发布的两种操作方法中,同一命名空间中的User
模型:SaveUser
和RegisterUser
?我认为屏幕截图中的User
应该来自实体框架模型,该模型可能没有[必需]
attribute?用户模型位于名称空间“TrainingWebsite.Models”中,控制器方法位于名称空间“TrainingWebsite.Controllers”中,我已将using directive“using TrainingWebsite.Models;”添加到控制器类中,但它作为未使用的指令变灰。这是否与我的问题有关?您显然有两个模型名称User
和RegisterUser()
方法中的名称与视图中的名称不同(并且将具有ConfirmPassword
等属性的对象保存到数据库是没有意义的。请将视图中模型的名称更改为(例如)UserViewModel
或RegisterViewModel
因此,清除它是一个视图模型并避免冲突(它也应该在单独的文件夹中,而不是模型文件夹中),您必须阻止空字符串。