[转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择
本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/
这里我们扩展HtmlHelper,就像它包含在ASP.NET MVC中一样,扩展方法使我们能为已有的类添加方法。这里使用了一个日期时间选择控件:My97DatePicker,需要添加到网站中,并在页面中引用。
先看看是怎么扩展的:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
using System;using System.Collections.Generic;using System.Runtime.CompilerServices;using System.Linq.Expressions;namespace System.Web.Mvc{ /// <summary> /// Extended the HtmlHelper for Calendar /// </summary> public static class CalendarExtensions { private static string defaultFormat = "yyyy-MM-dd"; /// <summary> /// 使用特定的名称生成控件 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="name">控件名称</param> /// <returns>Html文本</returns> public static string Calendar(this HtmlHelper helper, string name) { return Calendar(helper, name, defaultFormat); } /// <summary> /// 使用特定的名称生成控件 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="name">控件名称</param> /// <param name="format">显示格式</param> /// <returns>Html文本</returns> public static string Calendar(this HtmlHelper helper, string name, string format) { return GenerateHtml(name, null, format); } /// <summary> /// 使用特定的名称和初始值生成控件 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="name">控件名称</param> /// <param name="date">要显示的日期时间</param> /// <returns>Html文本</returns> public static string Calendar(this HtmlHelper helper, string name, DateTime date) { return Calendar(helper, name, date, defaultFormat); } /// <summary> /// 使用特定的名称和初始值生成控件 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="name">控件名称</param> /// <param name="date">要显示的日期时间</param> /// <param name="format">显示格式</param> /// <returns>Html文本</returns> public static string Calendar(this HtmlHelper helper, string name, DateTime date, string format) { return GenerateHtml(name, date, format); } /// <summary> /// 通过lambda表达式生成控件 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param> /// <returns>Html文本</returns> public static string CalendarFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) { return CalendarFor(helper, expression, defaultFormat); } /// <summary> /// 通过lambda表达式生成控件 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param> /// <param name="format">显示格式</param> /// <returns>Html文本</returns> public static string CalendarFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string format) { string name = ExpressionHelper.GetExpressionText(expression); DateTime value; object data = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, helper.ViewData).Model; if (data != null && DateTime.TryParse(data.ToString(), out value)) { return GenerateHtml(name, value, format); } else { return GenerateHtml(name, null, format); } } /// <summary> /// 通过lambda表达式获取要显示的日期时间 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param> /// <param name="format">显示格式</param> /// <returns>Html文本</returns> public static string CalendarDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string format) { string name = ExpressionHelper.GetExpressionText(expression); DateTime value; object data = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, helper.ViewData).Model; if (data != null && DateTime.TryParse(data.ToString(), out value)) { return value.ToString(format); } else { return string.Empty; } } /// <summary> /// 通过lambda表达式获取要显示的日期时间 /// </summary> /// <param name="helper">HtmlHelper对象</param> /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param> /// <returns>Html文本</returns> public static string CalendarDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression) { return CalendarDisplayFor(helper, expression, defaultFormat); } /// <summary> /// 生成输入框的Html /// </summary> /// <param name="name">calendar的名称</param> /// <param name="date">calendar的值</param> /// <returns>html文本</returns> private static string GenerateHtml(string name, DateTime? date, string format) { if (date != null) { return "<input type=\"text\" id=\"" + name + "\" name=\"" + name + "\" onfocus=\"WdatePicker({dateFmt:'" + format + "'})\" class=\"Wdate\" value=\"" + date.Value.ToString(format) + "\" />"; } else { return "<input type=\"text\" id=\"" + name + "\" name=\"" + name + "\" onfocus=\"WdatePicker({dateFmt:'" + format + "'})\" class=\"Wdate\" value=\"\" />"; } } }} |
使用办法:
日期选择输入框: <%= Html.CalendarFor(model => model.PlanStartTime)%>
显示日期:<%= Html.CalendarDisplayFor(model => model.PlanStartTime)%>
日期时间选择输入框:<%= Html.CalendarFor(model => model.PlanStartTime, “yyyy-MM-dd HH:mm”)%>
[转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择的更多相关文章
- ASP .NET MVC HtmlHelper扩展——简化“列表控件”的绑定
在众多表单元素中,有一类<select>元素用于绑定一组预定义列表.传统的ASP.NET Web Form中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDo ...
- 扩展ASP.NET MVC HtmlHelper类
在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...
- ASP.NET MVC HtmlHelper用法集锦
ASP.NET MVC HtmlHelper用法集锦 在写一个编辑数据的页面时,我们通常会写如下代码 1:<inputtype="text"value='<%=View ...
- MVC HtmlHelper扩展——实现分页功能
MVC HtmlHelper扩展类(PagingHelper) using System; using System.Collections.Generic; using System.Collect ...
- 【asp.net mvc】 扩展 htmlhelper 实现分页
参考文档:http://www.cnblogs.com/caofangsheng/p/5670071.html http://www.cnblogs.com/arte ...
- ASP.NET MVC HtmlHelper 类的扩展方法
再ASP.NET MVC编程中用到了R语法,在View页面编辑HTML标签的时候,ASP.NET MVC 为我们准备好了可以辅助我们写这些标签的办法,它们就是HtmlHelper.微软官方地址是:ht ...
- 13个 ASP.NET MVC 的扩展
ASP.NET MVC设计的主要原则之一是可扩展性.处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的.因此,如果您不喜欢ASP.NET MVC所使用的约定(或缺乏 ...
- 扩展 ASP.NET MVC 模型扩展 – ASP.NET MVC 4 系列
大部分人不能将核心运行时(System.Web 中的类)和 ASP.NET Web Forms 应用程序平台(System.Web.UI 中的类)区分开来. ASP.NET ...
- asp.net mvc htmlHelper
ASP.NET MVC 3.0 HTML辅助方法 HTML辅助方法(html helper)是用来帮助生成HTML的方法. 1.HTML辅助方法应用实例 ◊ 生成form元素 @using (Ht ...
随机推荐
- codevs——1031 质数环
1031 质数环 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 一个大小为N(N<=17 ...
- SAP EP 设置Portal别名安全模式
Securing the Portal Alias Cookie Context We recommend that you set the portal alias cookie to be del ...
- linux network name space
linux network namespace概念类似于网络中的 VRF (virtual routing and forwarding).但是,你不知道VRF的概念也没关系,下面我们通过一个简单的介 ...
- git锁和钩子以及图形化界面
1.锁机制 Locking Options 严格锁(strict locking):一个时刻,只有一个人可以占用资源. 乐观锁(optimistic locking):允许多个人同时修改同一文件.乐观 ...
- 华为OJ1964-求解立方根(牛顿迭代法)
一.题目描述 描述: 计算一个数字的立方根,不使用库函数. 函数原型double getCubeRoot(double input) 输入: 待求解参数 double类型 输出: 输出参数的立方根,保 ...
- leetcode笔记:Search in Rotated Sorted Array
一.题目描写叙述 二.解题技巧 因为这道题出现了旋转的情况,即比第一个元素小的元素可能出如今数值的后半段或者不出现. 因此.能够考虑採用变种的二分查找,即在比較中间元素与目标之前,先比較第一个元素与目 ...
- MariaDB ----增删改
1> 查看表的(创建)状态: show careate table students1; 注: 自增, (保护机制) 好马不吃回头草 2>查看 字段:( 查看表的结构) des ...
- Node.js创建自签名的HTTPS服务器
https://cnodejs.org/topic/54745ac22804a0997d38b32d 用Node.js创建自签名的HTTPS服务器 发布于 4 年前 作者 eeandrew 6 ...
- js图片懒加载(滚动加载)判断是否生效
一.什么是懒加载? 对未出现在视野范围内的图片先不进行加载,等到出现在视野范围才去加载. 二.为什么使用懒加载? 懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数. 理论性知识大家都有自 ...
- 函数计算 触发式计算 日志 MP3 图片 合成视频
函数计算 触发式计算 日志 MP3 图片 合成视频 [start_time]:20120511 06:59:11 [20120511 06:59:11_0.4950568322522534]: ...