mvc与My97DatePicker插件的结合

Razor视图引擎与My97DatePicker插件的结合

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Runtime.CompilerServices;
  4 using System.Linq.Expressions;
  5
  6 namespace System.Web.Mvc
  7 {
  8     /// <summary>
  9     /// Extended the HtmlHelper for Calendar
 10     /// </summary>
 11     public static class CalendarExtensions
 12     {
 13         private static string defaultFormat = "yyyy-MM-dd";
 14
 15         /// <summary>
 16         /// 使用特定的名称生成控件
 17         /// </summary>
 18         /// <param name="helper">HtmlHelper对象</param>
 19         /// <param name="name">控件名称</param>
 20         /// <returns>Html文本</returns>
 21         public static MvcHtmlString Calendar(this HtmlHelper helper, string name)
 22         {
 23             return Calendar(helper, name, defaultFormat);
 24         }
 25
 26         /// <summary>
 27         /// 使用特定的名称生成控件
 28         /// </summary>
 29         /// <param name="helper">HtmlHelper对象</param>
 30         /// <param name="name">控件名称</param>
 31         /// <param name="format">显示格式</param>
 32         /// <returns>Html文本</returns>
 33         public static MvcHtmlString Calendar(this HtmlHelper helper, string name, string format)
 34         {
 35             return GenerateHtml(name, null, format);
 36         }
 37
 38         /// <summary>
 39         /// 使用特定的名称和初始值生成控件
 40         /// </summary>
 41         /// <param name="helper">HtmlHelper对象</param>
 42         /// <param name="name">控件名称</param>
 43         /// <param name="date">要显示的日期时间</param>
 44         /// <returns>Html文本</returns>
 45         public static MvcHtmlString Calendar(this HtmlHelper helper, string name, DateTime date)
 46         {
 47             return Calendar(helper, name, date, defaultFormat);
 48         }
 49
 50         /// <summary>
 51         /// 使用特定的名称和初始值生成控件
 52         /// </summary>
 53         /// <param name="helper">HtmlHelper对象</param>
 54         /// <param name="name">控件名称</param>
 55         /// <param name="date">要显示的日期时间</param>
 56         /// <param name="format">显示格式</param>
 57         /// <returns>Html文本</returns>
 58         public static MvcHtmlString Calendar(this HtmlHelper helper, string name, DateTime date, string format)
 59         {
 60             return GenerateHtml(name, date, format);
 61         }
 62
 63         /// <summary>
 64         /// 通过lambda表达式生成控件
 65         /// </summary>
 66         /// <param name="helper">HtmlHelper对象</param>
 67         /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param>
 68         /// <returns>Html文本</returns>
 69         public static MvcHtmlString CalendarFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
 70         {
 71
 72             return CalendarFor(helper, expression, defaultFormat);
 73         }
 74
 75         /// <summary>
 76         /// 通过lambda表达式生成控件
 77         /// </summary>
 78         /// <param name="helper">HtmlHelper对象</param>
 79         /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param>
 80         /// <param name="format">显示格式</param>
 81         /// <returns>Html文本</returns>
 82         public static MvcHtmlString CalendarFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string format)
 83         {
 84             string name = ExpressionHelper.GetExpressionText(expression);
 85             DateTime value;
 86
 87             object data = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, helper.ViewData).Model;
 88             if (data != null && DateTime.TryParse(data.ToString(), out value))
 89             {
 90                 return GenerateHtml(name, value, format);
 91             }
 92             else
 93             {
 94                 return GenerateHtml(name, null, format);
 95             }
 96         }
 97
 98         /// <summary>
 99         /// 通过lambda表达式获取要显示的日期时间
100         /// </summary>
101         /// <param name="helper">HtmlHelper对象</param>
102         /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param>
103         /// <param name="format">显示格式</param>
104         /// <returns>Html文本</returns>
105         public static MvcHtmlString CalendarDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, string format)
106         {
107             string name = ExpressionHelper.GetExpressionText(expression);
108             DateTime value;
109             string Htmlstr = "";
110             object data = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, helper.ViewData).Model;
111             if (data != null && DateTime.TryParse(data.ToString(), out value))
112             {
113                 Htmlstr = value.ToString(format);
114             }
115             else
116             {
117                 Htmlstr = string.Empty;
118             }
119             return MvcHtmlString.Create(Htmlstr);
120         }
121
122         /// <summary>
123         /// 通过lambda表达式获取要显示的日期时间
124         /// </summary>
125         /// <param name="helper">HtmlHelper对象</param>
126         /// <param name="expression">lambda表达式,指定要显示的属性及其所属对象</param>
127         /// <returns>Html文本</returns>
128         public static MvcHtmlString CalendarDisplayFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
129         {
130             return CalendarDisplayFor(helper, expression, defaultFormat);
131         }
132
133         /// <summary>
134         /// 生成输入框的Html
135         /// </summary>
136         /// <param name="name">calendar的名称</param>
137         /// <param name="date">calendar的值</param>
138         /// <returns>html文本</returns>
139         private static MvcHtmlString GenerateHtml(string name, DateTime? date, string format)
140         {
141             string Htmlstr = "";
142             if (date != null)
143             {
144                 Htmlstr = "<input type=\"text\" id=\"" + name + "\" name=\"" + name + "\" onfocus=\"WdatePicker({dateFmt:‘" + format + "‘})\" class=\"Wdate\" value=\"" + date.Value.ToString(format) + "\" />";
145             }
146             else
147             {
148                 Htmlstr = "<input type=\"text\" id=\"" + name + "\" name=\"" + name + "\" onfocus=\"WdatePicker({dateFmt:‘" + format + "‘})\" class=\"Wdate\" value=\"\" />";
149             }
150             return MvcHtmlString.Create(Htmlstr);
151         }
152     }
153 }

使用方法

<td class="ms-ri">出生日期:</td>
<td style="vertical-align: middle">
          @Html.CalendarFor(m => m.Birthday)
</td>

时间: 2024-07-30 00:36:47

mvc与My97DatePicker插件的结合的相关文章

自制MVC框架的插件与拦截器基础

上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以下抽象类来实现插件或者拦截器. 1. AspectInterceptor抽象类 处理动态织入的AOP拦截器,Stephen.View框架中的拦截器抽象类,所有需要动态拦截器必须实现该类,该拦截器原理是通过aspectsharp实现的.该拦截器适用于控制层的拦截,且要使控制器类支持动态拦截必须给控制器加上DynamicAttribut

spring Mvc + Maven + 拷贝插件 (十一)

maven-antrun-plugin:可用于在项目编译打包时,把文件指定的文件拷贝到指定的位置,我们打包一般都是打包到 项目 的target 文件下; <groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.7</version> 他依赖几个jar项目. ant-1.8.2.jar 需要自己下载

Asp.Net MVC Razor视图引擎与My97DatePicker插件的结合

1 using System; 2 using System.Collections.Generic; 3 using System.Runtime.CompilerServices; 4 using System.Linq.Expressions; 5 6 namespace System.Web.Mvc 7 { 8 /// <summary> 9 /// Extended the HtmlHelper for Calendar 10 /// </summary> 11 publ

MVC下autocomplete插件的使用

Autocomplete插件的功能类似于Google Suggest 功能,可以在用户输入查询条件的时候,自动提示用户若干词条,方便用户快速查询.下面我们介绍下autocomplete插件如何在MVC下面使用. 首先,需要下载autocomplete插件,其下载地址是:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ 其次,需要在页面上引入两个文件(jquery文件除外),分别是jquery.autocomplete

MVC 数据列表显示插件大全

Jgrid 官网示例: http://www.trirand.net/demo/aspnet/mvc/jqgrid/ Code Project示例: http://www.codeproject.com/Articles/421189/jqGrid-MVC-Html-Helper WebGrid: https://msdn.microsoft.com/zh-cn/library/system.web.helpers.webgrid(v=vs.111).aspx Code Project示例: h

my97datepicker插件日期值改变事件 等同于input的onchang()时间

官网Demo地址http://www.my97.net/demo/index.htm <input type="text" class="Wdate" value="${year }-${month}" id="date" name="yearMonth" style="width:100px;" onclick="WdatePicker({dateFmt:'yyyy-M

简单好用的时间选择插件My97datepicker

我们经常会需要验证字符串的格式,比如密码长度范围.电子邮件格式.固定电话号码和手机号码格式等,这个时候我们经常会需要用到正则表达式.但是正则表达式用起来性能会低一点,所以在需要验证的时候能不使用正则表达式还是尽量不要使用正则表达式.下面贴出来我写的一个验证类,里面包含了一些常用的验证.这些都是服务端的验证,当然为了增加用户体验前端也应该要有验证. 代码 <script src="../My97DatePicker/WdatePicker.js" type="text/j

在ASP.NET MVC 上使用Web.sitemap

一.用ASP.NET WebForm开发的同学我想都用过Web.sitemap服务器控件吧,这个插件给我们带来了倍儿爽的感觉,大大提高了开发效率,对日后的维护也是大大的好.可是到了ASP.NET MVC,这个插件好像不怎么管用了.于是网上有一个非常好用的 mvc sitemap 插件 mvcsitemapprovider,不过今天小生也写了一个自己的案例,mvc Web.sitemap跨Areas,mvc Web.sitemap跨命名空间,仅供学习,大牛勿喷,小弟也是刚入门!代码如下: 二.步骤

利用My97DatePicker实现年份多选

昨天,咱们尝试使用Kalendae实现年份的多选事件,结果发现,该插件不能实现月份以及年份的选择,更不必说年份的多选的事件了.笔者也不愿多做深究,既然My97DatePicker可以定义选择年份,何不简单的改写改写它.笔者秉着这个思路,继续往皮毛之下探索.先看一下My97DatePicker的习性,俗语讲知己知彼,是吧.这个插件调用之后会改变调用位置的显示内容为当前选择日期.而且还可以给点击位置之外的地方,赋值(笔者就准备利用这点).一.通过My97DatePicker自带img <input