Asp.net mvc mvc中的数据验证不起作用
我现在在一个mvc项目中,在验证用户输入方面遇到了问题。以下是我用于执行验证的步骤: 我的实体如下所示:Asp.net mvc mvc中的数据验证不起作用,asp.net-mvc,validation,Asp.net Mvc,Validation,我现在在一个mvc项目中,在验证用户输入方面遇到了问题。以下是我用于执行验证的步骤: 我的实体如下所示: public class Sysuser { public Guid User_id { get; set; } //pk public Guid? Permission_id { get; set; } public Guid? Sex_id { get; set; } [Required(ErrorMessage="Pls input the user name")] [String
public class Sysuser
{
public Guid User_id { get; set; } //pk
public Guid? Permission_id { get; set; }
public Guid? Sex_id { get; set; }
[Required(ErrorMessage="Pls input the user name")]
[StringLength(50,ErrorMessage="UserName must less than 50 chars")]
public string User_name { get; set; }
[Required(ErrorMessage = "Pls input the pwd")]
public string Password { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Userdesc { get; set; }
public bool Isfamer { get; set; }
public string Ctrlpwd { get; set; }
public Guid Parent_id { get; set; }
public Syspermission Permission { get; set; }
public Bassex Sex { get; set; }
}
<td style="width:100px; text-align:right;">用户姓名:</td>
<td><%=Html.TextBox("User_name", (b == null) ? string.Empty : b.User_name, new { @class = "textbox" })%>
<%=Html.ValidationMessage("User_name")%>
</td>
public global::System.String user_name
{
get
{
return _user_name;
}
set
{
Onuser_nameChanging(value);
ReportPropertyChanging("user_name");
_user_name = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("user_name");
Onuser_nameChanged();
}
}
Exception Thrown at : _user_name = StructuralObject.SetValidValue(value, false); This property can't be set to null.
在SysUser.aspx页面中,我包含了所需的js文件:
<script src="../../Scripts/validation/jquery-1.7.2.min.js" type="text/javascript"> </script>
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
为什么我会犯这个错误?有人能帮我解决吗?thx.您需要创建SysUser.aspx的stronly类型视图,然后使用,而不是:
<%=Html.TextBox(...)
谢谢你的回答,但我有成千上万的文本框,恐怕这是唯一的办法。强类型视图使客户端和服务器端的验证更加容易。Visual Studio可以生成一个包含所有元素的表单,供您在创建新视图时选择编辑模板。这让我很难过。您是否有其他方法来执行客户端验证?是的,您需要手动实现所有客户端验证规则,请参阅:但是,当您在模型中进行更改时,不要忘记也将这些更改应用于验证规则。
<%=Html.TextBox(...)
<%=Html.TextBoxFor(m => m.User_Name, ...)
[HttpPost]
public ActionResult MySaveFunction(MyModel model)
{
if (ModelState.IsValid)
{
// save entity in db and redirect to for example success page
}
return View(model); // show the form page again
}