- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[ASP.NET MVC]通过对HtmlHelper 扩展简化“列表控件”的绑定
在众多表单元素中,有一类select元素用于绑定一组预定义列表。传统的ASP.NET Web Form 中,
它对应着一组重要的控件类型,即ListControl,我们经常用到DropDownList, ListBox、CheckBoxList
和RadioButtonList 都是其子类。ASP.NET MVC 通过对HtmlHelper 和HtmlHelperTModel的扩
展实现了对不同类型的select元素的绑定,它们以扩展方法的形式定义在SelectExtensions 中。当我
们在操作这些扩展方法的时候,必须手工地提供以 IEnumerableSelectListItem对象表示的列表项。
如果我们建立一个独立的组件来维护这些预定的列表,那么我们就可以定义一些更加简单的扩展方法以避
免手工地指定列表项。[源代码从这里下载]
一、创建一个独立的列表维护组件
我们将这些绑定在select元素中的预定义列表中的元素称为Code。作为简单的演示模拟,我们创建了
一个名为CodeManager 的组件。我们先来看看用于描述单一Code 的CodeDescription 类型的定义,
如下面的代码所示,CodeDescription 具有ID、Code、Description、EffectiveStartDate 和
EffectiveEndDate。以表示国家的列表为例,Code 代表某个国家的代码 (比如CN),Description 则
是一个可读性的描述 (比如China)。EffectiveStartDate 和EffectiveEndDate 决定了Code 的有效
期限,比如一组表示“税率”的列表,在不同的时间范围内可能采用不同的列表。换言之,作为统一类别 (通
过Category 属性表示)的列表中可能具有“多套”,它们可以共享相同的Code,我们通过ID 来区分这些
具有相同Code 的列表项。
1: public class CodeDescription
2: {
3: public string Id { get; set; }
4: public string Code { get; set; }
5: public string Description { get; set; }
6: public string Category{get;set;}
7: public DateTime EffectiveStartDate { get; set; }
8: public DateTime EffectiveEndDate { get; set; }
9:
10: public CodeDescription(string code, string description, string category)
11: {
12: this.Id = Guid.NewGuid().ToString();
13: this.Code = code;
14: this.Description = description;
15: this.Category = category;
16: this.EffectiveStartDate = DateTime.MinValue;
17: this.EffectiveEndDate = DateTime.MaxValue;
18: }
19: }
如下所示的CodeCollection 表示一组CodeDescription 列表,它直接继承自
CollectionCodeDescription类型。由于CodeDescription 具有有效期限的概念,我们需要筛选出当
前有效的Code,所以我们定义了如下一个GetEffectiveCodes 方法。
1: public class CodeCollection : CollectionCodeDescription
2: {
3: public IEnumerableCodeDescription GetEffectiveCodes()
4: {
文档评论(0)