我们在mvc项目里经常要对枚举,日期,副文本输入,我们可以用笨拙的方法去view页面里绑定呈现的html内容,而且这种办法不能重用,也就是在不同的view里还是需要做相同的事情,给个日期空间选择例子吧,

常用的最老实,最笨拙的方法就是在view里添加如下代码:

<input type="text" onclick="WdatePicker({readOnly:true, dataFmt:'yyyy-mm-dd'})" value="@model.CreateDate" />

如果我们用EdiotrTemplates, 我们可以很灵活的实现, 并且还可以重用,我们需要做的是在/views/shared/ 添加目录DisplayTemplates and EdiotrTemplates, 因为我们是要重写DateTime的模板,我们就要增加一个与类型同名的DateTime.cshtml,

如果我们是要重写枚举StatusType, 那就新加StatusType.cshtml,

改view里面的内容:

@model System.DateTime;
@{
  var propertyname = ViewData.ModelMetadata.PropertyName; // 获取熟悉的名字,这样提交数据的时候才可以赋值到相应的熟悉上
//获取additionalViewData 的内容 如:@Html.DispalyFor(m=>m.CreateDate, new {key="123"}), ViewData["key"]就可以获取
}
<input type="text" onclick="WdatePicker({readOnly:true, dataFmt:'yyyy-mm-dd'})" value="@model.CreateDate" name="@propertyname" />

在我们要使用的页面里增加代码:

@Html.DisplayFor(model=>model.CreateDate) // 默认模板使用的是类型同名的cshtml,  这里使用的是/views/shared/DisplayTemplates/DateTime.cshtml
或者如果你要指定模板名, @Html.DisplayFor(model=>model.CreateDate, "模板名") //这里使用的是/views/shared/DisplayTemplates/模板名.cshtml

注意我们有@Html.DisplayFor and @Html.EditorFor 两种模板使用方式, 它分别对应/views/shared/DisplayTemplates 和 /views/shared/EditorTemplates 下面的模板。

这里我给的列子是简单类型,你也可以对复杂类型写自己的模板了,是不是很爽,赶紧在项目里利用起这个特性吧,View代码可以减少冗余了。

高级使用:

MVC DisplayTemplates and EdiotrTemplates.的更多相关文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理6

    接下来先做角色这一板块的(增删改查),首先要新建一个Role控制器,在添加一个RoleList的视图.表格打算采用的是bootstrap的表格. using System; using System. ...

  2. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理7

    做完角色之后接下来做先做页面按钮的增加.删除.修改.这里用到的功能和角色那边是一样的.就不多说了.直接上代码. 后台控制器代码 using AuthorDesign.Web.App_Start.Com ...

  3. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理8

    接下来做的是对页面的增删改查与页面与页面按钮之间的联系.先上代码和页面效果 using AuthorDesign.Web.App_Start.Common; using System; using S ...

  4. ASP.NET MVC学习之模型模板篇

    一.前言 如果你使用ASP.NET MVC制作后台一定会爱上它的EditorForModal.DisplayForModal和LabelForModal方法,因为这些方法可以将模型直接变成对应的标签, ...

  5. ASP.NET MVC 4 部署到 Windows Azure 如何轉換時區設定

    由於公司慢慢地開始將新的專案都移往 Windows Azure 雲端平台做網站代管,漸漸地也開始遇到一些小問題,這些問題在還沒上雲端之前通常不會發生,像我們這次遇到的問題就跟顯示時間有關.由於 Win ...

  6. 【笔记】ASP.NET MVC Model元数据

    问题1:什么叫Model元数据? Model元数据,是针对数据类型的一种描述信息.由于复杂类型(或者说类型嵌套的存在,比如CustomerModel中有一个属性为复杂类型Address)的存在,因此M ...

  7. MVC - 模型验证

    使用MVC的数据验证特性可以自动实现客户端验证和服务端验证 假设有一个Employee类 public class Employee { public int ID { get; set; } pub ...

  8. Mvc Model 模板的获取【学习笔记】

    MVC的Model模板有两种:一种编辑模式(@Html.EditorFor()).一种显示模式(Html.DisplayFor()). 模板的获取与执行(以下转自这里): 当我们调用HtmlHelpe ...

  9. 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性

    原文:返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 [索引页][源码下载] 返璞归真 asp.net mvc (6) - asp.net mvc 2.0 新特性 ...

随机推荐

  1. tomcat改端口的一些问题

    cmd运行netstat -anp查看端口使用情况,找到被占用端口的PID

  2. Struts2中实现文件上传的功能

    1.首先得配置一下Struts得配置文件struts-xml: <?xml version="1.0" encoding="UTF-8" ?> &l ...

  3. url地址数据转换成json数据格式

    var urlToJson = function(){ var ret = {}; window.location.search.substr(1).replace(/(\w+)=(\w+)/ig, ...

  4. Oracle SQL自带函数整理

    数字函数 abs(n):用于返回数字n的绝对值 ceil(n):返回大于等于数字n的最小整数 floor(n):返回小于等于数字n的最大整数 mod(m,n):返回m/n数字相除后的余数,如果n=0, ...

  5. SnackbarUtils:一行代码搞定Snackbar

    此文章是我在简书的文章 http://www.jianshu.com/p/f4ba05d7bbda Snackbar在Android中的使用日益广泛,很大程度上替代了传统的Toast,相比Toast拥 ...

  6. studio_svn

    最新升级IDEA12到13版本,升级后发现IDEA中SVN无法正常使用,但文件夹下能够正常使用. 并且报错:svn: E204899: Cannot run program "svn&quo ...

  7. 迅雷Vip账号共享器(持续更新)

    更新日期:2016.5.19 下载地址:https://pan.baidu.com/s/1jIya6My 软件界面: 软件界面: 下载地址:http://pan.baidu.com/s/1pJI47j ...

  8. 关于PC端与手机端随着手指移动图片位置放生变化的拖拽事件

    当按下鼠标时,图片随鼠标移动松开时图片回到原位 drag("div_id") function drag(node_id){ var node = document.getElem ...

  9. isset()和empty()的区别

    form表单的数据提交过来 如果用isset() if(isset($_GET)){ .....} '' '0' 0 返回 true 不够严谨 empty() '' '0' 0 显示返回false 比 ...

  10. Learning C# by Developing Games with Unity 5.x(2nd)

    项目:https://pan.baidu.com/s/1o7IMcZo using UnityEngine; using System.Collections; namespace VoidGame ...