一起谈.NET技术,ASP.NET MVC验证框架中关于属性标记的通用扩展方法
2011-09-01 23:47
991 查看
之前写过一篇文章《ASP.NET MVC中的验证》,唯一的遗憾就是在使用Data Annotation Validators方式验证的时候,如果数据库是Entityframework等自动生成的文件,就没有办法使用扩展属性标记进行标记。现在已经开始有了一些其它的Asp.net MVC 验证框架,使用上跟Data Annotation Validators差不太多,但是普遍有这样的问题,如果数据库是Entityframework生成的edm文件,没有办法进行扩展属性标记。
今天在网上发现了另外一个 Asp.net MVC 验证框架---xVal框架,使用上跟Data Annotation Validators非常接近,也有类似的问题。
简单介绍下,xVal是一个开源的asp.net mvc验证框架,有关它的介绍,可以参考:《xVal - a validation framework for ASP.NET MVC》
xVal使用了MS-PL的开源协议 ,也就是说,它允许用户看、修改和分发源代码,而不论出自商业用途还是非商业用途,类似BSD许可证。
View层的代码
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MVCValidate.Models.User>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Create</title>
</head>
<body>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="UserName">UserName:</label>
<%= Html.TextBox("user.UserName") %>
<%= Html.ValidationMessage("user.UserName")%>
</p>
<p>
<label for="Password">Password:</label>
<%= Html.TextBox("user.Password") %>
<%= Html.ValidationMessage("user.Password")%>
</p>
<p>
<label for="Address">Address:</label>
<%= Html.TextBox("user.Address")%>
<%= Html.ValidationMessage("user.Address")%>
</p>
<p>
<label for="Telephone">Telephone:</label>
<%= Html.TextBox("user.Telephone")%>
<%= Html.ValidationMessage("user.Telephone")%>
</p>
<p>
<label for="Age">Age:</label>
<%= Html.TextBox("user.Age")%>
<%= Html.ValidationMessage("user.Age")%>
</p>
<p>
<label for="Email">Email:</label>
<%= Html.TextBox("user.Email")%>
<%= Html.ValidationMessage("user.Email")%>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</body>
</html>
最终的效果如下图所示:
Asp.net mvc开源验证框架非常的多,只是有相似问题的更多,有了这个通用的方法,就可以很容易对其他验证框架进行扩展了。
最后,为了方便大家学习,代码我进行了打包,下载地址在这里:
代码下载
【参考文章】:
《Using MetadataType attribute with ASP.NET MVC xVal Validation Framework》
今天在网上发现了另外一个 Asp.net MVC 验证框架---xVal框架,使用上跟Data Annotation Validators非常接近,也有类似的问题。
简单介绍下,xVal是一个开源的asp.net mvc验证框架,有关它的介绍,可以参考:《xVal - a validation framework for ASP.NET MVC》
xVal使用了MS-PL的开源协议 ,也就是说,它允许用户看、修改和分发源代码,而不论出自商业用途还是非商业用途,类似BSD许可证。
View层的代码
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MVCValidate.Models.User>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Create</title>
</head>
<body>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="UserName">UserName:</label>
<%= Html.TextBox("user.UserName") %>
<%= Html.ValidationMessage("user.UserName")%>
</p>
<p>
<label for="Password">Password:</label>
<%= Html.TextBox("user.Password") %>
<%= Html.ValidationMessage("user.Password")%>
</p>
<p>
<label for="Address">Address:</label>
<%= Html.TextBox("user.Address")%>
<%= Html.ValidationMessage("user.Address")%>
</p>
<p>
<label for="Telephone">Telephone:</label>
<%= Html.TextBox("user.Telephone")%>
<%= Html.ValidationMessage("user.Telephone")%>
</p>
<p>
<label for="Age">Age:</label>
<%= Html.TextBox("user.Age")%>
<%= Html.ValidationMessage("user.Age")%>
</p>
<p>
<label for="Email">Email:</label>
<%= Html.TextBox("user.Email")%>
<%= Html.ValidationMessage("user.Email")%>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</body>
</html>
最终的效果如下图所示:
Asp.net mvc开源验证框架非常的多,只是有相似问题的更多,有了这个通用的方法,就可以很容易对其他验证框架进行扩展了。
最后,为了方便大家学习,代码我进行了打包,下载地址在这里:
代码下载
【参考文章】:
《Using MetadataType attribute with ASP.NET MVC xVal Validation Framework》
相关文章推荐
- 《ASP.NET MVC验证框架中关于属性标记的通用扩展方法》之继续扩展
- ASP.NET MVC验证框架中关于属性标记的通用扩展方法
- ASP.NET MVC验证框架中关于属性标记的通用扩展方法
- 一起谈.NET技术,ASP.NET MVC 2 验证消息本地化策略扩展
- 一起谈.NET技术,ASP.NET MVC中对Model进行分步验证的解决方法
- 一起谈.NET技术,鲜为人知的ASP.NET MVC 2.0框架高效之谜
- 一起谈.NET技术,详解ASP.NET MVC 2中的新ADO.NET实体框架
- 一起谈.NET技术,细数ASP.NET MVC框架的7大顶级功能
- 一起谈.NET技术,ASP.NET MVC中实现多个按钮提交的几种方法
- 一起谈.NET技术,13个不可不知的ASP.NET MVC扩展点
- 一起谈.NET技术,专访微软MVP衣明志:走进ASP.NET MVC 2框架开发
- 一起谈.NET技术,重构TekPub——从ASP.NET MVC框架迁移到Ruby on Rails
- 一起谈.NET技术,ASP.NET MVC 2扩展点之Model Binder
- 一起谈.NET技术,关于技术争论(尤其是ASP.NETWebForms 和 ASP.NETMVC 之争)
- 一起谈.NET技术,现有ASP.NET MVC框架应用巧妙移植到手机
- 一起谈.NET技术,ASP.NET MVC中对数据进行排序的方法
- 一起谈.NET技术,ASP.NET MVC 验证方式(1)
- 一起谈.NET技术,ASP.NET MVC 2生成动态表单的一种最简单的思路
- 一起谈.NET技术,ASP.NET MVC 2示例Tailspin Travel UI层分析
- 一起谈.NET技术,ASP.NET MVC 3 Beta初体验之WebGrid