[转]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 ...
随机推荐
- 使用JavaMail通过QQ/126服务器服务发送邮件
https://blog.csdn.net/yidragon88xx/article/details/53230310
- Sum-(最大子序列和)
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=652&pid=1003 题目大意: 给你一个序列,你随便找一 ...
- php7.3源码编译
前置条件 autoconf:2.59+ automake:1.4+ libtool:1.4.x(除了1.4.2) re2c:0.13.4+ bison:建议1.281.35 或 1.75 依赖的库 y ...
- atom的react自动补全插件
atom-react-autocomplete–项目内,组件名及状态的自动补全 autocomplete-js-import–模块导入智能提示 emmet-jsx-css-modules– React ...
- 【Nginx】epoll及内核源码详解
内核源码: https://www.nowcoder.com/discuss/26226?type=0&order=0&pos=21&page=1 epoll流程: 首先调用e ...
- Python学习系列之文件操作
Pyhton文件打开方式 with= open('文件路径','打开模式') as f:#PS:python3提供了with语句来帮我们自动调用close方法,所以说无论打开文件是否出错都能自动正确的 ...
- python爬虫实践--求职Top10城市
前言 从智联招聘爬取相关信息后,我们关心的是如何对内容进行分析,获取用用的信息.本次以上篇文章“5分钟掌握智联招聘网站爬取并保存到MongoDB数据库”中爬取的数据为基础,分析关键词为“python” ...
- php生成二维码2
<?php include "phpqrcode.php"; $value = "http://huizhongda.taobao.com/"; $err ...
- Python爬虫开发【第1篇】【正则表达式】
非结构化数据:HTML(正则表达式.XPath.CSS选择器) 结构化数据:JSON文件(JSON Path.转化为Python类型进行操作) XML文件(转化成Python类型.XPath.CSS选 ...
- JavaScript基础 -- 定时器
js 定时器有以下两个方法: setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式.方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭. set ...