艾伟_转载:学习 ASP.NET MVC (第二回)实战篇
2011-08-29 00:21
429 查看
本系列文章导航
学习 ASP.NET MVC (第一回)理论篇学习 ASP.NET MVC (第二回)实战篇
学习 ASP.NET MVC (第三回)实战篇
学习 ASP.NET MVC (第四回)实战篇
学习 ASP.NET MVC (第五回)理论篇
上篇简单的了解了ASP.NET MVC的基本概念和基本流程,接下来的几篇将通过简单的实例,来看看如何通过ASP.NET MVC创建应用程序。Demo很简单也很基础,高手绕过。
闲话少说,直接进入正题。首先我们要做的就是安装ASP.NET 1.0。大家可以到CodePlex上下载。
然后我们用VS2008创建新的ASP.NET MVC项目:
namespace UserInfo.Models
{
public partial class Users
{
public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
public IEnumerable<RuleViolation> GetRuleViolations()
{
if (String.IsNullOrEmpty(UserName))
yield return new RuleViolation("名称不能为空", "UserName");
if (String.IsNullOrEmpty(Sex))
yield return new RuleViolation("性别不能为空", "Sex");
if (String.IsNullOrEmpty(Tel))
yield return new RuleViolation("电话不能为空", "Tel");
if (String.IsNullOrEmpty(BirthPlace))
yield return new RuleViolation("出生地不能为空", "BirthPlace");
if (String.IsNullOrEmpty(Company))
yield return new RuleViolation("工作单位不能为空", "Company");
if (String.IsNullOrEmpty(Contact))
yield return new RuleViolation("联系方式不能为空", "Contact");
yield break;
}
partial void OnValidate(ChangeAction action)
{
if (!IsValid)
{
throw new ApplicationException("处罚规则");
}
}
}
public class RuleViolation
{
public string ErrorMessage { get; private set; }
public string PropertyName { get; private set; }
public RuleViolation(string errorMessage, string propertyName)
{
ErrorMessage = errorMessage;
PropertyName = propertyName;
}
}
}
这里有几点值得注意:
我们直接对 Users模型类公开 IsValid 属性和GetRuleViolations() 方法,IsValid 属性根据验证和业务规则返回 true 或 false,GetRuleViolations() 则返回
所有错误的业务逻辑列表。
我们将class 定义为Partial 到项目中,来实现 IsValid 和 GetRuleViolations()方法。Partial 类用来增加方法/属性/事件到 VS 设计器生成的类中(如 LINQ to SQL 设计器生成的 Users类),有助于区分我们编写的代码。
这里,我们使用 C#的 yield return 特性,返回有序的 RuleViolation 集合。
yield return 语句返回集合的一个元素,并移动到下一个元素上。yield break 可停止迭代。包含 yield 语句的方法或属性也称为迭代块。迭代块必须声明为返回 IEnumerator 或 IEnumerable 接口。这个块可以包含多个 yield return 语句或 yield break 语句,但不能包含 return 语句。
当然这里只是简单的进行数据的验证。
到这里,我们就基本上对Users的Model的编写就基本的完成了。
ok,先在这里,下篇待续。
相关文章推荐
- 艾伟_转载:学习 ASP.NET MVC (第四回)实战篇
- 艾伟_转载:学习 ASP.NET MVC (第三回)实战篇
- 艾伟_转载:学习 ASP.NET MVC (第五回)理论篇
- 艾伟_转载:学习 ASP.NET MVC (第一回)理论篇
- 学习 ASP.NET MVC (第二回)实战篇
- 【转载】MVC巧用枚举做权限管理 | NET开发中你可能会用到的常用方法总结 |学习 ASP.NET MVC
- [转载]Asp.net MVC 2 + Castle + NHibernate 项目实战(1)
- 【转载】ASP.NET MVC Web API 学习笔记---第一个Web API程序
- 转载 ASP.NET MVC学习之(5):Html.ActionLink
- 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查
- 艾伟_转载:ASP.NET MVC 2博客系列之一:强类型HTML辅助方法
- 艾伟_转载:ASP.NET MVC 2博客系列
- 一步一步学习asp.net mvc 1.0 创建NerdDinner程序Part1(转载)
- 基于Bootstrap和Knockout.js的ASP.NET MVC开发实战 关于 拦截器的 学习 部分
- 学习 ASP.NET MVC (第三回)实战篇
- 转载 ASP.NET MVC学习之(5):Html.ActionLink
- Asp.Net MVC学习总结之过滤器详解(转载)
- 一步一步学习asp.net mvc 1.0 创建NerdDinner程序Part2(转载)
- 《ASP.NET MVC 4 实战》学习笔记 1:第一个MVC用程序(上)
- 艾伟_转载:ASP.NET MVC数据验证