这段时间一直在忙.NET的项目,今天就写一下关于.NET的文章吧,也很长时间没写过.NET的啦 

在使用ASP.NET MVC3 的时候,使用元数据模式可以非常方便地设置每个 字段(或者说属性)以减少前台页面代码。如可为 字段 添加验证信息,自定义显示 字段名称等。如以下代码可设置字段显示名称和此字段为必填:






[ DisplayName ( "姓名" ) ] 
[ Required ( ) ] 
Public string Name { get ; set ; }

//而在View里只需一句话就可以,系统会自动帮你生成验证和字段输入等代码 
@Html . EditorForModel ( ) ;

不需要写一大堆的HTML input等代码,特别是其验证功能感觉很方便,当然你也可以自定义验证错误信息!

OK,今天主要说说如何在字段属性里动态设置 多语言 。大家看到以上代码是正常写法,只能直接写死某个字段显示的内容,如果要实现 多语言 ,我们就要重写 Display 属性了,只需继承 DisplayNameAttribute 然后就可以将其改写:










10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
public class LocalizedDisplayName : DisplayNameAttribute 

        private string _defaultName = "" ;

public TypeResourceType { get ; set ; }

public string ResourceName { get ; set ; }

public LocalizedDisplayName ( string defaultName ) { _defaultName = defaultName ; }

public override string DisplayName 
        { 
            get 
            { 
                PropertyInfo p = ResourceType . GetProperty ( ResourceName ) ;

if ( p != null ) 
                { 
                    return p . GetValue ( null , null ) . ToString ( ) ; 
                } 
                else 
                { 
                    return _defaultName ; 
                } 
            } 
        } 
}

以上代码是利用了反射,然后从系统资源里获取相应的语言资源,因此在字段属性里就可以这样使用了:



[ LocalizedDisplayName ( "姓名" , ResourceName = "Name" , ResourceType = typeof ( Resources . Admin ) ) ] 
[ Required ( ) ] 
Public string Name { get ; set ; }

LocalizedDisplayName 的构造函数里有3个参数,分别是默认的语言显示内容,资源名称(一般就是key啦),资源类型(就是你创建的 Resources 的那个类),这样使用起来是否很方便? 

最后顺便说一下,默认情况下直接使用 @Html.EditorForModel(); 出来的字段顺序是与数据库里的排列一致的,就是说如果你之后想为某个表增加一个字段,默认就会显示在页面最下面,这样的话就为界面显示布局带来不便,有时候一些新增的字段不一定就是要放到最后的,解决的办法是可以为每个字段进行 排序 ,只需使用以下代码即可:





[ Display ( Order = 10 ) ] 
Public string Name { get ; set ; }

[ Display ( Order = 20 ) ] 
Public string Password { get ; set ; }

这样就可为任意字段进行 排序 了 

ASP.NET MVC为字段设置多语言显示 [转]的更多相关文章

  1. asp.net MVC SignalR 与数据库 实时同步显示

    asp.net MVC SignalR 与数据库 实时同步显示 错误:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数据库启用 ...

  2. Asp.net mvc 小试牛刀一:多语言支持

    最近因为项目需要又从UWP开发转到了Asp.net mvc 开发,由于也不是什么老手,所以就将项目常见的一些技术问题记录一下自己的解决方案. 第一个需求:用户可以自由切换界面显示语言. 解决方案一:界 ...

  3. 给Asp.net MVC Forms 验证设置角色访问控制

    当我们使用Asp.net MVC Forms方式验证用户, 然后设置Controller 或 Action 的 Authorize属性时, 默认情况下只有Users属性可以设置(这里的Users通常是 ...

  4. [转]开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo

    热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...

  5. 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo(转)

    热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...

  6. ASP.NET MVC读取XML并使用ViewData显示

    看到网上一个网友问及,无法获取XML某一个节点内容.下面Insus.NET在ASP.NET MVC环境下实现它. 先把XML文件放入App_Data目录,当然你可以放在自建目录中.打开看看它有几层,几 ...

  7. 设置centos7语言显示环境

    1.查看可选语言显示包 locale -a ............(省略好多) zh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.utf8zh_HKzh_HK ...

  8. asp.net错误页和asp.net mvc错误页设置

    asp.net错误页 在日常项目开发过程中,我们需要给网站设置错误页和记录错误日志. 首先,在项目中添加全局应用程序类 在Global.asax中 protected void Application ...

  9. ASP.NET MVC Html.BeginForm 设置 timeout

    示例代码: @using (Html.BeginForm("PublishSubmit", "Blog", FormMethod.Post, new { id ...

随机推荐

  1. javascript实现九九乘法表

    CSS代码部分: <style type="text/css"> table { width: 800px; height: 300px; border-collaps ...

  2. ML-线性回归

    记样本数目为$m$,样本点$i$用$(x^{(i)}, y^{(i)})$表示,其中 $x^{(i)}=\begin{pmatrix}x_1^{(i)}\\ x_2^{(i)}\\ ...\\x_n^ ...

  3. jquery常用总结

    1.遍历对象 n是属性 value是对应的值 $.each(param,function(n,value) { datas[n] = value; }); 2.获取select改变后的值 $('sel ...

  4. HTML 链接 - href

    链接 在HTML的学习中,链接的标签发挥着很大的作用,HTML 使用超级链接与网络上的另一个文档相连.几乎可以在所有的网页中找到链接.点击链接可以从一张页面跳转到另一张页面. 比如说:实例 创建超级链 ...

  5. C#中浮点数依IEEE-754标准转二进制串 (MODBUS 浮点数转换)

    因工作需要,把再串口通信中浮点数与字节流的数据转换函数放在这,转发的,谢谢原作者. 今天花了一天的时间搜罗资料,为了解决一个串口编程的进制转化问题.因为串口传送的浮点数据格式与IEEE-754标准(3 ...

  6. Mapreduce体系架构

    Mapreduce也采用master和slave的架构设计.Jobtracker负责作业的初始化和分配 与任务节点进行通信,协调整个作业的执行. 一个job分为两种task(map/reduce),包 ...

  7. Spark学习(一) -- Spark安装及简介

    标签(空格分隔): Spark 学习中的知识点:函数式编程.泛型编程.面向对象.并行编程. 任何工具的产生都会涉及这几个问题: 现实问题是什么? 理论模型的提出. 工程实现. 思考: 数据规模达到一台 ...

  8. 微信小程序-上传下载

    wx.uploadFile(OBJECT) 上传 将本地资源上传到开发者服务器.如页面通过 wx.chooseImage(图片)/wx.chooseVideo(视频) 等接口获取到一个本地资源的临时文 ...

  9. 第三讲. COTS包交换介绍

    COTS里面涉及到虚拟机的概念,所以网络稍微复杂一点点. 基本概念 目前虚拟机里面常见的网卡控制器有三类: 半虚拟化网卡设备,由Hypervisor统一管理,虚拟机里面采用特定的接口进行调用. 透传网 ...

  10. HTML5扩展之微数据与丰富网页摘要

    一.微数据是? 一个页面的内容,例如人物.事件或评论不仅要给用户看,还要让机器可识别.而目前机器智能程度有限,要让其知会特定内容含义,我们需要使用规定的标签.属性名以及特定用法等.举个简单例子,我们使 ...