【发布时间】:2010-09-13 09:09:13
【问题描述】:
有几个教程解释了如何使用 EF 数据注释来使用 MVC 框架进行表单验证。并在客户端使用 jquery。
参见例如:http://dotnetaddict.dotnetdevelopersjournal.com/clientvalidation_mvc2.htm
我想达到同样的效果,但不使用 MVC/MVC2。
我想构建一个经典的 asp.net 站点,创建实体模型,创建包含验证(必需、正则表达式等)的部分类。
我创建了实体模型和包含数据注释的部分类。我可以向数据库添加新记录。
我想念的是验证。现在,即使字段无效,我也可以将记录添加到数据库中,我想得到错误,如果可能的话,我想使用 jquery 进行客户端验证(在 MVC 中,您只需将 <% Html.EnableClientValidation(); %> 添加到视图中。 ..)。
你能帮帮我吗?或者指出一些很好的在线资源来解释这一点?
非常感谢。
编辑:我在这里找到了一些东西:
How can I tell the Data Annotations validator to also validate complex child properties?
我有一个名为“用户”的实体,我创建了一个部分类,如下所示:
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace MySite.Models
{
[MetadataType(typeof(UserMetaData))]
public partial class User
{
}
public class UserMetaData
{
[Required(ErrorMessage = "Username Required")]
[DisplayName("Username")]
public string Username{ get; set; }
[DisplayName("Password")]
[Required(ErrorMessage = "Password Required")]
[RegularExpression(@"^[^;>;&;<;%?*!~'`;:,."";+=|]{6,10}$", ErrorMessage = "The password must be between 6-10 characters and contain 2 digits")]
public string Password{ get; set; }
}
}
在我的页面后面的代码中,我进行了与上述链接类似的“isValid”检查:
var validationContext = new ValidationContext(person, null, null);
var validationResults = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(userToAdd, validationContext, validationResults);
if (isValid)
{
savetoDB();
}
但是当我调试时......“isValid”总是“true”,即使我将字段保留为空。帮助:-S
EDIT2:
它总是“真”,因为我正在填写“用户”属性,如下所示:
User userToAdd = new User();
userToAdd.Username = txtUsername.Text;
userToAdd.Password = txtPassword.Text;
我改变了对象:从“用户”到“用户元数据”(User userToAdd = new UserMetaData();)然后验证工作(“假”,以防正则表达式不被尊重)......但仍然很奇怪......然后我应该创建另一个“用户”对象并再次填充它......不是很干净......
【问题讨论】:
标签: asp.net entity-framework validation jquery-validate data-annotations