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

艾伟_转载:学习 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,先在这里,下篇待续。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: