有几个教程解释了如何使用EF数据注释来使用MVC框架进行表单验证。并为客户端使用jQuery。实体框架 - 验证(服务器+ clientside,jquery)与数据注释,WITHOUT MVC?
参见例如: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”总是“真”,即使我离开字段为空。说明:-S
EDIT2:
这一直是 “真”,因为我被灌了 “用户” 属性,如下所示:
User userToAdd = new User();
userToAdd.Username = txtUsername.Text;
userToAdd.Password = txtPassword.Text;
我改变了对象:从 “用户” “UserMetaData”(User userToAdd = new UserMetaData();
),然后验证工作(假如不尊重正则表达式,则为“假”)......但仍然很奇怪......然后我应该创建另一个“用户”对象并重新填充它...不是很干净...