您的位置:首页 > 编程语言 > ASP

ASP.NET MVC关于验证的个人理解

2010-06-09 00:34 465 查看
ASP.NET MVC的封装很强,或许我太笨,一个月断断续续才理解..

 

使用属性来标记是很方便的,只不过其背后的构造是繁琐的..

 

1,首先定义一个 枚举,来枚举出要验证的类型

 

2,然后写一个类,继承Attribute,该类中定义一个成员为上面的枚举类型

 

3,将此类标记到Model上

 

4,前台用反射然后在提交时判断

 

...属性是一种标记,属性是一种契约...属性是代码编写者为类或方法定义的扩展...

 

下面是一个简单的实例..

 

public class RegisterModel
{
[Required(ErrorMessage = "用户名称不可为空并且不能小于6位")]
[DisplayName("用户名称")]
public String UserName { get; set; }

[Required(ErrorMessage = "登录密码不可为空并且不能小于6位")]
[DisplayName("登录密码")]
public String Password { get; set; }

[Required(ErrorMessage = "确认密码不可为空并且不能小于6位")]
[DisplayName("确认密码")]
public String ConfirmPassword { get; set; }

[Required(ErrorMessage = "电子邮箱不可为空并且不能小于6位")]
[DisplayName("电子邮箱")]
public String Email { get; set; }

}


 

在aspx页面中用利用反射特性输出对应上面Model的HTML控件

 

<%PropertyDescriptorCollection p = TypeDescriptor.GetProperties(typeof(RegisterModel));%>
<%for (int i = 0; i < p.Count; i++)
{ %>
<tr>
<td class="style2"><%=p[i].DisplayName.ToString()%></td>

<td class="style3"><input id="<%=p[i].Name %>" name="<%=p[i].Name %>" type="<%= p[i].Name=="UserName"||p[i].Name=="Email"?"text":"password" %>" /></td>

<td><div id="ValTo<%=p[i].Name %>"></div></td>


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息