[转]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日期时间选择,布布扣,bubuko.com

时间: 2024-10-17 10:15:35

[转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择的相关文章

扩展ASP.NET MVC HtmlHelper类

在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 HtmlHelper类用于在ASP.NET MVC framework中帮助视图呈现html部分. 这个类提供了一些方法,你可以使用这些方法呈现html中的一些类型(textbox,checkbox等),或者html的一部分(如form).ASP.NET MVC framework helper有这些内容

asp.net mvc Htmlhelper简单扩展

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace WebApplication1.MyHtmlHelper { public static class MyHtmlHelper { //页面渲染结果: //<span>我扩展的Label,自动生成Span标签</span> //把标签名都显示(直接将内

扩展 ASP.NET MVC 模型扩展 &ndash; ASP.NET MVC 4 系列

       大部分人不能将核心运行时(System.Web 中的类)和 ASP.NET Web Forms 应用程序平台(System.Web.UI 中的类)区分开来.        ASP.NET 开发团队在简单的核心运行时抽象之上创建了复杂的 Web Form 抽象和 ASP.NET MVC.正因为 ASP.NET MVC 框架建立在公共抽象之上,所以 ASP.NET MVC 框架能实现的任何功能,任何人也都可以实现.ASP.NET MVC 框架本身也由若干层抽象组成,从而使得开发人员能够

在ASP.NET MVC下扩展一个带验证的RadioButtonList

在ASP.NET MVC4中,HtmlHelper为我们提供了Html.RadioButton()方法用来显示Radio Button单选按钮.如果想显示一组单选按钮,通常的做法是遍历一个集合把每个单选按钮显示出来.本篇尝试写一个扩展方法用来展示一组带验证的单选按钮. 首先来扩展HtmlHelper,扩展方法中接收一个SelectListItem的集合,遍历这个集合把每个单选按钮显示出来,并且让这些单选按钮具有不同的id属性值. using System.Collections.Generic;

数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 &lt;二十八&gt;

一.HtmlHelper.MVC快速增删改查 MVC 在MVC里面请求首先到控制器-->然后 -->数据库数据放在APP_DATE文件夹里, -->js.css文件放在content文件夹里 -->控制器放在Controllers里,控制器要以controller结尾 控制器下面的所有方法都称为action 2)webform跟 aspnet MVC:区别请求的地址不一样了 MVC请求的是控制器下面的action webform:aspx页面或者是一般处理程序 -->a标签

C# ASP.NET MVC HtmlHelper用法大全

HTML扩展类的所有方法都有2个参数: 以textbox为例子 public static string TextBox( this HtmlHelper htmlHelper, string name, Object value, IDictionary<string, Object> htmlAttributes ) public static string TextBox( this HtmlHelper htmlHelper, string name, Object value, Ob

ASP.NET MVC HtmlHelper之Html.ActionLink

前言 ActionLink用于生成超链接,方法用于指向Controller的Action. 扩展方法与参数说明 ActionLink扩展方法如下: public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, string linkText, string actionName); public static MvcHtmlString ActionLink(this HtmlHelper htmlHelper, strin

【MVC】ASP.NET MVC HtmlHelper用法大全

1.ActionLink <%=Html.ActionLink("这是一个连接", "Index", "Home")%>   带有QueryString的写法 <%=Html.ActionLink("这是一个连接", "Index", "Home", new { page=1 },null)%> <%=Html.ActionLink("这是一个连接

C# ASP.NET MVC HtmlHelper用法汇总

1. @Html.Raw() 方法输出带有html标签的字符串: 如: @Html.Raw("<div style='color:red'>Hello World!</div>") 结果:Hello World! 2. @html.ActionLink生成一个<a href=".."></a>标记: 如:@Html.ActionLink(“linkText”.“actionName”.“controlName”,new