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. }

使用方法

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

OK.结束

Asp.Net MVC Razor视图引擎与My97DatePicker插件的结合的更多相关文章

  1. ASP.NET MVC Razor视图引擎攻略

    --引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%>&l ...

  2. ASP.NET MVC——Razor视图引擎

    Razor是MVC框架视图引擎,我们今天就来说一说Razor视图引擎. 首先还是来创建一个基础项目叫Razor来演示. 先来定义一个Model叫Product public class Product ...

  3. Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html

    Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...

  4. ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2 视图模板页

    https://www.cnblogs.com/xlhblogs/archive/2013/06/09/3129449.html MVC Razor模板引擎 @RenderBody.@RenderPa ...

  5. ASP.NET WEB应用程序(.network4.5)MVC Razor视图引擎2

    https://www.bbsmax.com/A/gAJG67OXzZ/ 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASP ...

  6. ASP.NET Mvc Razor视图语法

    在ASP.NET MVC中有两套模版引擎,一套是ASPX,一套是Razor,从事过WebForms开发的朋友们,对于ASPX模版已经很熟悉了,下面我说一下我所熟悉的Razor模版引擎的一些语法,供大家 ...

  7. ASP.NET MVC3 Razor视图引擎-基础语法

    I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往的MVC2发生了很明显的变化. 1.ASP.NET MVC3必要的运行环境 ...

  8. MvcMailer通过ASP.NET MVC Razor视图和基架发送邮件

    MvcMailer是一个有趣的组件,您可以使用ASP.NET MVC框架在发送邮件.很重要的是,它使用Razor视图引擎的观点作为电子邮件模板和很容易安装和使用.在本文中你将看到如何安装,设置邮件模板 ...

  9. (转)ASP.NET MVC3 Razor视图引擎-基础语法

    转自:http://kb.cnblogs.com/page/96883/ I:ASP.NET MVC3在Visual Studio 2010中的变化 在VS2010中新建一个MVC3项目可以看出与以往 ...

随机推荐

  1. U33405 纽约

    U33405 纽约 花费 \(w\) 元可以购买一辆容量为 \(w\) 的车 现在你有 \(n <= 2000\) 个物品, 搬运策略: 一直搬能放下里面最重的, 直到任意物品都不能搬上为止 求 ...

  2. caffe 配置文件详解

    主要是遇坑了,要记录一下. solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是solver配置文件.运行代码一般为 # caffe train --s ...

  3. 在MyBatis中,前台传数组批量传id处理数据方式

    <update id = "dishBatchSaleOrDown"> <if test="ids != null"> <if t ...

  4. 科学计算三维可视化---Mayavi可视化实例

    一:Dragon绘制实例(三维扫描的绘制) 三维扫描主要用于对物体空间外形结构以及色彩进行扫描,用以获得物体表面的空间坐标, 他的主要意义在于能够将实物的立体信息转换为计算机能够直接处理的数据信号,为 ...

  5. 用JS获得QQ号码的昵称,头像,生日

    有一个网址,可以返回我们要的内容. http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin=指定QQ号码 将会返回下列内容: _Callbac ...

  6. 悲催的IE6 七宗罪大吐槽(带解决方法)第一部分

    一.奇数宽高 悲剧的IE6啊,为何有如此多bug,但用户市场又那么大,真让我们搞网站的纠结.今天就遇到了一个非常奇怪但又很细节的一个bug,一个外部的相对定位div,内部一个绝对定位的div(righ ...

  7. POJ 3783 Balls --扔鸡蛋问题 经典DP

    题目链接 这个问题是谷歌面试题的加强版,面试题问的是100层楼2个鸡蛋最坏扔多少次:传送门. 下面我们来研究下这个题,B个鸡蛋M层楼扔多少次. 题意:给定B (B <= 50) 个一样的球,从 ...

  8. Android笔记之开机自启

    有时候需要应用具有开机自启的能力,或者更常见的场景是开机时悄悄在后台启动一个Service. 关键点: 1. Android系统在开机的时候会发送一条广播消息,只需要接收这条广播消息即可,不过需要注意 ...

  9. shell脚本-监控及邮件提醒

    首先写一个邮件提醒python文件 #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import smtplib import email.m ...

  10. Java编程思想 4th 第2章 一切都是对象

    Java是基于C++的,但Java是一种更纯粹的面向对象程序设计语言,和C++不同的是,Java只支持面向对象编程,因此Java的编程风格也是纯OOP风格的,即一切都是类,所有事情通过类对象协作来完成 ...