MVC的viewPage 通用属性运用。
试想下在MVC的前端页面JS或者html中需要使用多语言,而后端的多语言是维护在资源文件中的,前端如果使用的话需要使用AJAX频繁的获取,一个页面中可能会存在大量的需要语言转换的地方,频繁使用AJAX是不靠谱的。
参照ABP中的方式,可以使用修改PageBaseType的方式来实现。
MVC的Page页面是继承自System.Web.Mvc.WebViewPage的,我们可以写个类来继承自这个类并修改Page的默认继承即可,在这个类中,我们增加多语言的方法。
首先,在Views目录下新建一个类:MultiPageWebViewPageBase.cs。内容如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- namespace Mvc_Vip.Mvc
- {
- public abstract class VipViewPage<T>: System.Web.Mvc.WebViewPage<T>
- {
- public string TestTag { get { return Gxrc.Common.WebConfig.IsTest ? "t" : ""; } }
- public bool IsTest { get { return Gxrc.Common.WebConfig.IsTest; } }
- }
- public abstract class VipViewPage : VipViewPage<dynamic>
- {
- }
- }
- -----------------------------------------------------分割线------栗子2----------------------
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Resources;
- using System.Web;
- using System.Web.Mvc;
- using TaskManagement.Infrastructure.Extensions;
- namespace TaskManagement.UI.Views
- {
- public abstract class MultiPageWebViewPageBase : MultiPageWebViewPageBase<dynamic>
- {
- }
- public abstract class MultiPageWebViewPageBase<TModel> : WebViewPage<TModel>
- {
- public ResourceManager rm = Resource.Resource.ResourceManager;
- /// <summary>
- /// Constructor.
- /// </summary>
- protected MultiPageWebViewPageBase()
- {
- }
- /// <summary>
- /// Gets localized string for given key name and current language.
- /// </summary>
- /// <param name="name">Key name</param>
- /// <returns>Localized string</returns>
- protected virtual string L(string name)
- {
- return rm.GetString(name) ?? name;
- }
- /// <summary>
- /// Gets localized string for given key name and current language with formatting strings.
- /// </summary>
- /// <param name="name">Key name</param>
- /// <param name="args">Format arguments</param>
- /// <returns>Localized string</returns>
- protected virtual string L(string name, params object[] args)
- {
- return rm.GetString(name, args) ?? name;
- }
- /// <summary>
- /// Gets localized string for given key name and specified culture information.
- /// </summary>
- /// <param name="name">Key name</param>
- /// <param name="culture">culture information</param>
- /// <returns>Localized string</returns>
- protected virtual string L(string name, CultureInfo culture)
- {
- return rm.GetString(name, culture) ?? name;
- }
- /// <summary>
- /// Gets localized string for given key name and current language with formatting strings.
- /// </summary>
- /// <param name="name">Key name</param>
- /// <param name="culture">culture information</param>
- /// <param name="args">Format arguments</param>
- /// <returns>Localized string</returns>
- protected string L(string name, CultureInfo culture, params object[] args)
- {
- return rm.GetString(name, culture, args) ?? name;
- }
- }
- }
至web.config中的
- <system.web.webPages.razor>
下pages节,将
- <pages pageBaseType="System.Web.Mvc.WebViewPage">
修改为:
- <pages pageBaseType="Mvc_Vip.Mvc.VipViewPage">
- --------------------栗子2-----------------------------------
<pages pageBaseType="TaskManagement.UI.Views.MultiPageWebViewPageBase">
至此,我们就可以在前端view里使用@(TestTag ) 或者、@L("Field_Common_ID")的方式来使用多语言了。当然,在js中也可以这样使用:
if (confirm("@L("Msg_Common_Confirm")"))
同样的方式,可以在该VipViewPage、或者、MultiPageWebViewPageBase添加多个公用的方法以扩展前端。
缺点:这种多语言无法在单独的js文件中使用,必须在继承于MultiPageWebViewPageBase的页面中使用。
MVC的viewPage 通用属性运用。的更多相关文章
- 分享基于EF+MVC+Bootstrap的通用后台管理系统及架构
基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通用配置及服务调用, 提供了OA.CRM.CMS的原型实例,适合快速构建中小型互联网及行业 ...
- 分享基于EF+MVC+Bootstrap的通用后台管理系统及架构(转)
http://www.cnblogs.com/guozili/p/3496265.html 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通 ...
- HTML5 新增通用属性
一:HTML5保留的常用元素 7. 表格相关元素.表格在html里还算重要的了. <table> :用于表格定义. cellpadding: 单元格内容和单元格边框距离 ...
- MVC验证13-2个属性至少输入一项
原文:MVC验证13-2个属性至少输入一项 有时候,我们希望2个属性中,至少有一个是必填,比如: using Car.Test.Portal.Extension; namespace Car.Te ...
- [ASP.NET MVC]如何定制Numeric属性/字段验证消息
原文:[ASP.NET MVC]如何定制Numeric属性/字段验证消息 对于一个Numeric属性/字段,ASP.NET MVC会自动进行数据类型的验证(客户端验证),以确保输入的是一个有效的数字, ...
- 基于EF+MVC+Bootstrap的通用后台管理系统及架构
分享基于EF+MVC+Bootstrap的通用后台管理系统及架构 基于EF+MVC+Bootstrap构建通用后台管理系统,集成轻量级的缓存模块.日志模块.上传缩略图模块.通用配置及服务调用, 提供了 ...
- Swing界面组件的通用属性
----------------siwuxie095 Swing 界面组件(控件)的通用属性: (1)enabled:启用/禁用 ...
- html5--1.19 通用属性
html5--1.19 通用属性 学习要点: 1.通用属性的概念及几个常用的通用属性2.对属性值的若干点补充 通用属性 通用属性(全局属性)可以用于任何的HTML5元素:通用属性有十几种:这节课不会全 ...
- mvc中使用remote属性来做ajax验证
mvc中使用remote属性来做ajax验证比較easy : [Remote("Action", "Controller", AdditionalFields ...
随机推荐
- NOI.AC 32 Sort——分治
题目:http://noi.ac/problem/32 从全是0和1的情况入手,可以像线段树一样分治下去,回到本层的时候就是左半部的右边是1,右半部的左边是0,把这两部分换一下就行.代价和时间一样是n ...
- TX-
NVIDIA Jetson TX2刷机 TX1 Gsteramer 环境配置 TX1 ssh配置
- vijos:P1285佳佳的魔法药水
背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水……怎么样才能得到0号药水呢?你要知道佳佳的家境也不是很好,成本得 ...
- Scala学习——集合的使用和“_”的一些使用(中)
1.空格加_可以表示函数的原型 命令行代码: scala> def fun1(name:String){println(name)} fun1: (name: String)Unit scala ...
- DCloud-HTML5+:barcode
ylbtech-DCloud:barcode&camera 1.返回顶部 1. http://www.html5plus.org/doc/zh_cn/barcode.html 2. Barco ...
- .NETFramework:StringBuilder
ylbtech-.NETFramework:StringBuilder 1.程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken ...
- wpf Datagrid 的全选
在我的一个datagrid的一列中需要全选框,所以我在样式中是这样写的: <DataGridTemplateColumn.Header> <CheckBox> <i:In ...
- 转:AppScan代理扫描app/H5安全测试
1.首先设置AppScan代理,设置如下:
- JAVA学习笔记——(五)
今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...
- python-根据URL地址下载文件
博主个人网站:https://chenzhen.online 使用Python中提供的urllib.request下载网上的文件 #coding=utf-8 """ 目标 ...