XHTMLEntity FrameworkWebFormsVisual Studio 2008Visual Studio 2005AjaxC# 3.0HTML中级开发Visual StudioJavascript.NETASP.NETC#
使用 IErrorDataInfo 接口进行 ASP.NET MVC 表单验证






4.78/5 (6投票s)
在本文中,我将探讨一种实现验证逻辑的替代方法。我将向您展示如何使用 IErrorDataInfo 接口执行验证。
引言
我将探讨使用 ASP.NET MVC 实现验证逻辑的替代方法。我将向您展示如何使用 IErrorDataInfo 接口执行验证。
背景
我已经在 我之前的文章 中展示了如何使用 ASP.NET MVC 执行表单验证。在本文中,我将探讨一种实现验证逻辑的替代方法。
使用代码
这是 IDataErrorInfo 接口
public interface IDataErrorInfo
{
    // Properties
    string Error { get; }
    string this[string columnName] { get; }
}
我们将修改 上一篇文章,该文章实现了 IErrorDataInfo 接口。要实现 IDataErrorInfo 接口,我们必须创建一个部分类。我们的 tblComment 部分类如下所示
public partial class tblComment : IDataErrorInfo
{
    private Dictionary<string,> _errors = new Dictionary<string,>();
    partial void OnNameChanging(string value)
    {
        if (string.IsNullOrEmpty(value.Trim()))
            _errors.Add("Name", "Name is required.");
    }
    partial void OnEmailChanging(string value)
    {
        if (string.IsNullOrEmpty(value.Trim()))
            _errors.Add("Email", "Email is required.");
    }
    partial void OnMessageChanging(string value)
    {
        if (string.IsNullOrEmpty(value.Trim()))
            _errors.Add("Message", "Message is required.");
    }
    #region IDataErrorInfo Members
    public string Error
    {
        get { return string.Empty; }
    }
    public string this[string columnName]
    {
        get
        {
            if (_errors.ContainsKey(columnName))
                return _errors[columnName];
            return string.Empty;
        }
    }
    #endregion
}
需要注意的是,当 Entity Framework 生成实体类时,Entity Framework 会自动向类中添加部分方法。Entity Framework 生成与类中每个属性对应的 OnChanging 和 OnChanged 部分方法。我们将修改我们的 UserCommentController 类,如下所示
public class UserCommentController : Controller
{
    private CommentEntities _db = new CommentEntities();
    [AcceptVerbs("GET")]
    public ActionResult UserComment()
    {
        return View(new tblComment());
    }
    [AcceptVerbs("POST")]
    public ActionResult UserComment([Bind(Exclude = "CommentID")] 
                                     tblComment commentToCreate)
    {
        // Validate
        if (!ModelState.IsValid)
            return View();
        // Add to database
        try
        {
            _db.AddTotblComment(commentToCreate);
            _db.SaveChanges();
        
            return RedirectToAction("UserComment");
        }
        catch
        {
            return View();
        }
    }
}
ASP.NET MVC 框架通过使用模型绑定器创建传递到 UserComment() 操作的 tblComment 实例。模型绑定器负责通过将 HTML 表单字段绑定到 tblComment 对象的实例来创建 tblComment 对象的一个实例。现在,我将运行该项目,它将显示用户评论视图,如下所示

摘要
在本文中,我们探讨了使用 IErrorDataInfo 接口进行 ASP.NET MVC 表单验证。

