这段时间一直在忙.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. Topcoder SRM 683 Div2 - C

    树形Dp的题,根据题意建树. DP[i][0] 表示以i为根节点的树的包含i的时候的所有状态点数的总和 Dp[i][1] 表示包含i结点的状态数目 对于一个子节点v Dp[i][0] = (Dp[v] ...

  2. cmp函数

    cmp(x,y),既可以比较数字大小,也可以比较字符串.如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1. 数字的比较 >>> ...

  3. 税收基础知识 > 三税(营业税, 增值税, 所得税) + 关税

    三税:营业税 ▪ 增值税 ▪ 所得税 主要关注:一般纳税人, 起征点不详细描述. 营业税(Business tax) 营业税(Business tax),是对在中国境内提供应税劳务.转让无形资产或销售 ...

  4. 一看便知_配置linux 网络配置的几种方法

    一. -    setup    进入设置  -    /etc/rc.d/init.d/network  restart    运行完才会生效刚才的修改    二.命令设置 [临时生效]-    i ...

  5. Android二维码功能实现,在程序内嵌入ZXing项目

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9526247 最近二维码真是越来越火了,随便电视上.网络上.商场里,到处都是二维码. ...

  6. 新版微信h5视频自动播放

    微信最近升级了新版本,直播视频不能自动播放,经过了一番探索,发现下列方法可以实现自动播放. if (typeof WeixinJSBridge == "undefined") { ...

  7. Java开发中经典的小实例-(冒泡法)

    public class Test25 {    public static void main(String[] args) {        // 冒泡法        int[] array = ...

  8. unreal 自定义 Slate Style Sets

    搜集到的最有价值的一篇教学,按照作者的方法尝试中遇到了一些问题.[感谢这位作者!] 网址:https://wiki.unrealengine.com/Slate_Style_Sets_Part_2 在 ...

  9. C++ 字符编码转换类

    记录一下C++ 编码转换的函数: #pragma once #include "afx.h" #define DEFAULT_CODE 0 #define CHINESE_SIMP ...

  10. Node.js学习-1

    关于node.js 首先,node.js不是一门语言,是一个平台.因为在以前,javascript主要是用于网页的交互,所以必须依附于浏览器存在,只有在浏览器上才能运行javascript. 后来ja ...