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

OK.结束

时间: 2025-01-05 23:07:07

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

ASP.NET MVC Razor视图引擎攻略

--引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%><%else{%> //Do something<%}%> 我们站在一个读者的立场上来看,”<% %>“这种标记C#代码的方法是十分蛋疼的. 如果写这段代码的人没有良好的缩进和对齐习惯的话,一段逻辑较为复杂的代码就会堆砌着杂乱无章的"<%“和"%>

ASP.NET MVC Razor 视图引擎

. 使用 @ 字符将代码添加到页面中.正如传统的aspx视图的<% %>相同.    下面代码是介绍单语句块.内嵌代码块.多行语句块 1 <!-- 简单块 声明两个变量--> 2 @{int num = 10;} 3 @{string str = "hello cnblogs";} 4 <!-- 内联表达式 输入刚才声明的两个变量--> 5 <p>刚才声明的整形的值为: @num</p> 6 <p>刚才声明的字符型

Asp.Net Mvc Razor视图语法

    Asp.Net Mvc Razor视图语法 [email protected]符号输出变量值 2.使用C#语法嵌套Html标签循环输出NameList的值:使用@{C#语法代码}: 3.输出@符号使用两个@@ 4.服务器注释使用@*注释内容*@ [email protected]:输出文本,或者使用<text></text> 6.在@()括号进行简单的操作或运算 [email protected]()或@{}可以输出带有html标签的字符串 8.Razor可以智能识别邮箱写

ASP.NET MVC 对于视图引擎的优化

我经常使用asp.net MVC框架来做网站.总的来说,MVC框架是一个非常优秀的框架.相对于曾经的web form模式,我个人感觉分工更加合理思路也更加清晰,但是交给开发人员的工作也相对变多了. 当使用标准配置的时候在新建了控制器,还没有建视图的时候,运行网站,访问这个我们可以看到 因此我们可以判断,默认的视图引擎首先加载的顺序如上图所示 ~/Views/Home/Index.aspx~/Views/Home/Index.ascx~/Views/Shared/Index.aspx~/Views

MVC Razor视图引擎

Razor 不是编程语言.它是服务器端标记语言. Razor 是一种允许您向网页中嵌入基于服务器的代码(Visual Basic 和 C#)的标记语法 当网页被写入浏览器时,基于服务器的代码能够创建动态内容.在网页加载时,服务器在向浏览器返回页面之前,会执行页面内的基于服务器代码.由于是在服务器上运行,这种代码能执行复杂的任务,比如访问数据库. Razor在减少代码冗余.增强代码可读性和VS智能感知方面,都有着突出的优势. Razor一经推出就深受所有ASP.Net开发者的喜爱. Razor 使

ASP.NET MVC Razor视图(2)

昨天介绍了一些Razor的基本语法,几天接着向下说: 补成一个,上次介绍了怎么输出原样的文本,用<text></text>标签,下面再介绍一种语法: @{@:我爱北京}  这个@:我爱北京必须写在@{}C#代码段中,否则报错 1.输出@符号怎么做? 在Razor中,我们用@@输出"@",类似于C#中"//" 2.我们可以在Razor使用Response.Write(),Server,Request,Session,这是为什么呢? 我们反编译.

Mvc Razor视图引擎基础

<1> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> @ViewData["time"

MVC Razor视图引擎的入门

首先我们来说说他的给我们开发者带来那些好处吧: Razor语法易于输入,易于阅读,微软当时是这样定义的:简洁,富有表现力和灵活性,支持所有文本编辑器,强大的智能提示功能,单元测试. Rozor文件类型 RazorC#中是  .csHtml Razor的标识符 "@" @foreach(var album in Model.Albums) { <li>@album </li> }

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术