[转]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 ...
随机推荐
- Rikka with Phi 线段树
Chosen Problem Solving and Program design as an optional course, you are required to solve all kinds ...
- js下载
下载用ajax不好使,得用表单提交的方式 download:function(url,paramObj){ var doc = document; //使用一个隐藏的form表单执行提交,没有则创建 ...
- CSS (二)解析CSS盒子
话说.一写博客还有些莫名的兴奋感-- 这几天一直挤时间忙于赶牛腩视频,迟到的CSS盒子.请谅解. CSS盒子,一開始听起来还有点高大上的赶脚. 后来了解之后,发现事实上非常easy理解.从功能上讲非常 ...
- android application类简单介绍(一)
每次应用程序执行时.应用程序的application类保持实例化的状态. 通过扩展applicaiton类,能够完毕下面3项工作: 1.对android执行时广播的应用程序级事件如低低内做出响应. 2 ...
- ramfs、rootfs和initramfs【转】
ramfs, rootfs and initramfs October 17, 2005 Rob Landley <rob@landley.net> =================== ...
- 写一个简单的Makefile
all: osx .PHONY: osx linux run osx: kale.dylib linux : kale.so run: kale.bin CC = gcc OBJECTS = $(pa ...
- bzoj4031 [HEOI2015]小Z的房间——矩阵树定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4031 矩阵树定理的模板题(第一次的矩阵树定理~): 有点细节,放在注释里了. 代码如下: # ...
- 洛谷P2827 蚯蚓——思路题
题目:https://www.luogu.org/problemnew/show/P2827 思路... 用优先队列模拟做的话,时间主要消耗在每次的排序上: 能不能不要每次排序呢? 关注先后被砍的两条 ...
- oracle 统计/分析函数
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于每个组返回多行,而聚合函数对于每个组只返回一行. 语法: Sql代码 <analytic ...
- Linux 系统管理命令 - uptime - 显示系统的运行时间及负载
命令详解 重要星级: ★★★☆☆ 功能说明: uptime 命令可以输出当前系统时间.系统开机到现在的运行时间.目前有多少用户在线和系统平均负载等信息 语法格式: uptime 说明: 直接执行 up ...