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 表单验证。