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”)%>