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>

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

  1. MVC框架的插件与拦截器基础

    自制MVC框架的插件与拦截器基础 上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以 ...

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

    using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System. ...

  3. 使用asp.net mvc引擎开发插件系统

    一.前言 我心中的插件系统应该是像Nop那样(更牛逼的如Orchard,OSGI.NET),每个插件模块不只是一堆实现了某个业务接口的dll,然后采用反射或IOC技术来调用,而是一个完整的mvc小应用 ...

  4. .NET MVC 简单的插件式开发

    插件式开发的优势 1.提高软件的复用度 2.提高软件开发的并行性 3.缩短软件的研发周期.节约研发成本,带给程序开发人员更多的灵活性,产品在软件发布以后还可以添加新的插件和完善已有的功能. 4.方便软 ...

  5. ASP.NET MVC:模块化/插件式文章汇总

    方案 Shazwazza | Developing a plugin framework in ASP.NET MVC with medium trust 基于ASP.NET MVC3 Razor的模 ...

  6. 自制MVC框架基础插件介绍

    本文介绍的基础插件不是实现BeforehandCommonAttribute或ProceedPlugin的postsharp插件,这些都是自定义的基础性的拦截,而且在项目中经常用到. 1). Comp ...

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

    上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以下抽象类来实现插件或者拦截器. 1 ...

  8. ASP.NET MVC jQuery 树插件在项目中使用方法(一)

    jsTree是一个 基于jQuery的Tree控件.支持XML,JSON,Html三种数据源.提供创建,重命名,移动,删除,拖"放节点操作.可以自己自定义创建,删 除,嵌套,重命名,选择节点 ...

  9. MVC 数据列表显示插件大全

    Jgrid 官网示例: http://www.trirand.net/demo/aspnet/mvc/jqgrid/ Code Project示例: http://www.codeproject.co ...

随机推荐

  1. iOS: NSMutableArray的方法removeObject:inRange:

    - (void)removeObject:(id)anObject inRange:(NSRange)aRange

  2. 算法战斗:给定一个号码与通配符问号W,问号代表一个随机数字。 给定的整数,得到X,和W它具有相同的长度。 问:多少整数协议W的形式和的比率X大?

    如果说: 给定一个号码与通配符问号W,问号代表一个随机数字. 给定的整数,得到X,和W它具有相同的长度. 问:多少整数协议W的形式和的比率X大? 进格公式 数据的多组,两排各数据的,W,第二行是X.它 ...

  3. Linux 编程学习笔记----ANSI C 文件I/O管理

    转载请注明出处:http://blog.csdn.net/suool/article/details/38129201 问题引入 文件的种类 依据数据存储的方式不同,能够将文件分为文本文件和二进制文件 ...

  4. mysql float double 类型

    1.float类型 float列类型默认长度查不到结果.必须指定精度. 比方 num float, insert into table (num) values (0.12); select * fr ...

  5. Android开发框架SmartAndroid2.0 强劲框架

    SmartAndroid 是一个功能强劲的 Android 框架,作为一个简单而"优雅"的工具库包,它能够为 Android 开发人员建立功能完好的Android 应用程序. 经过 ...

  6. Java equals的一个坑

    public class StringEqualsObject { public static void main(String[] args) { String name="Tom&quo ...

  7. mysqlbackup 还原特定的表

    mysqlbackup使用TTS恢复指定表. ************************************************************* 4.恢复特定表 ******* ...

  8. 【转】HLSL基础

    原文地址http://blog.csdn.net/chpdirect1984/article/details/1911622 目录 前言 1.HLSL入门 1.1什么是着色器 1.2什么是HLSL 1 ...

  9. CodeForces 22D Segments 排序水问题

    主题链接:点击打开链接 升序右键点.采取正确的点 删边暴力 #include <cstdio> #include <cstring> #include <algorith ...

  10. UVa 514 Rails(经典栈)

     Rails  There is a famous railway station in PopPush City. Country there is incredibly hilly. The st ...