ASP.NET MVC为字段设置多语言显示 [转]
这段时间一直在忙.NET的项目,今天就写一下关于.NET的文章吧,也很长时间没写过.NET的啦
在使用ASP.NET MVC3 的时候,使用元数据模式可以非常方便地设置每个 字段(或者说属性)以减少前台页面代码。如可为 字段 添加验证信息,自定义显示 字段名称等。如以下代码可设置字段显示名称和此字段为必填:
1
2 3 4 5 6 |
[ DisplayName ( "姓名" ) ]
[ Required ( ) ] Public string Name { get ; set ; } //而在View里只需一句话就可以,系统会自动帮你生成验证和字段输入等代码 |
不需要写一大堆的HTML input等代码,特别是其验证功能感觉很方便,当然你也可以自定义验证错误信息!
OK,今天主要说说如何在字段属性里动态设置 多语言 。大家看到以上代码是正常写法,只能直接写死某个字段显示的内容,如果要实现 多语言 ,我们就要重写 Display 属性了,只需继承 DisplayNameAttribute 然后就可以将其改写:
1
2 3 4 5 6 7 8 9 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 if ( p != null ) |
以上代码是利用了反射,然后从系统资源里获取相应的语言资源,因此在字段属性里就可以这样使用了:
1
2 3 |
[ LocalizedDisplayName ( "姓名" , ResourceName = "Name" , ResourceType = typeof ( Resources . Admin ) ) ]
[ Required ( ) ] Public string Name { get ; set ; } |
LocalizedDisplayName 的构造函数里有3个参数,分别是默认的语言显示内容,资源名称(一般就是key啦),资源类型(就是你创建的 Resources 的那个类),这样使用起来是否很方便?
最后顺便说一下,默认情况下直接使用 @Html.EditorForModel(); 出来的字段顺序是与数据库里的排列一致的,就是说如果你之后想为某个表增加一个字段,默认就会显示在页面最下面,这样的话就为界面显示布局带来不便,有时候一些新增的字段不一定就是要放到最后的,解决的办法是可以为每个字段进行 排序 ,只需使用以下代码即可:
1
2 3 4 5 |
[ Display ( Order = 10 ) ]
Public string Name { get ; set ; } [ Display ( Order = 20 ) ] |
这样就可为任意字段进行 排序 了
ASP.NET MVC为字段设置多语言显示 [转]的更多相关文章
- asp.net MVC SignalR 与数据库 实时同步显示
asp.net MVC SignalR 与数据库 实时同步显示 错误:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数据库启用 ...
- Asp.net mvc 小试牛刀一:多语言支持
最近因为项目需要又从UWP开发转到了Asp.net mvc 开发,由于也不是什么老手,所以就将项目常见的一些技术问题记录一下自己的解决方案. 第一个需求:用户可以自由切换界面显示语言. 解决方案一:界 ...
- 给Asp.net MVC Forms 验证设置角色访问控制
当我们使用Asp.net MVC Forms方式验证用户, 然后设置Controller 或 Action 的 Authorize属性时, 默认情况下只有Users属性可以设置(这里的Users通常是 ...
- [转]开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...
- 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo(转)
热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力.由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI. ...
- ASP.NET MVC读取XML并使用ViewData显示
看到网上一个网友问及,无法获取XML某一个节点内容.下面Insus.NET在ASP.NET MVC环境下实现它. 先把XML文件放入App_Data目录,当然你可以放在自建目录中.打开看看它有几层,几 ...
- 设置centos7语言显示环境
1.查看可选语言显示包 locale -a ............(省略好多) zh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.utf8zh_HKzh_HK ...
- asp.net错误页和asp.net mvc错误页设置
asp.net错误页 在日常项目开发过程中,我们需要给网站设置错误页和记录错误日志. 首先,在项目中添加全局应用程序类 在Global.asax中 protected void Application ...
- ASP.NET MVC Html.BeginForm 设置 timeout
示例代码: @using (Html.BeginForm("PublishSubmit", "Blog", FormMethod.Post, new { id ...
随机推荐
- 轻松实现Android,iOS的一个手势动画效果
先来看效果 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过 ...
- linux vmware安装完成后如何设置桥接上网
linux 主机初步安装完成后还是不能上网,如何设置共享上网 1 首先要明白上网方式:虚拟机网卡-------------------vmnet1--------------------真实机网卡( ...
- jQuery事件总结
blur() 触发或绑定blur事件.$("input").blur(function(){ $("input").css("background-c ...
- 获得本机IP,并且将ip放在CIpAdress里
char szHostName[MAX_PATH + 1]; gethostname(szHostName, MAX_PATH); //得到计算机名 hostent *p = gethostbynam ...
- 对一个二维数组进行升序排列a[0][1]为最小
public static int[][] dyadicArraySort(int a[][]){ int temp=0;int sum =0;int nn=0; for(int i=0;i<a ...
- 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼
今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120 LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000K ...
- 【leetcode❤python】 189. Rotate Array
#-*- coding: UTF-8 -*-#由于题目要求不返回任何值,修改原始列表,#因此不能直接将新生成的结果赋值给nums,这样只是将变量指向新的列表,原列表并没有修改.#需要将新生成的结果赋予 ...
- 关于 OJ1574的参考题解(较麻烦)
#include <stdio.h>int main(){ long a,b,c,d,e; scanf("%ld",&a); d=a; b=0; while(d ...
- shell,bash,git bash,xshell,ssh
一:shell是linux/unix系统的外壳,也可以理解为命令行接口,就是你输入并执行命令行的地方.bash(born again shell)是shell的一种,最常用的shell之一.你在你的l ...
- Kanzi编程基础1 - 定时器Timer
Kanzi虽然发生了比较多的版本更迭,api也发生了很多变化,但定时器的头文件一直都在一个地方:#include "user/include/user/ui/message/kzu_mess ...