MVC项目中WebViewPage的实战应用
由于公司的项目可能会卖到国外,所以需要支持多语言。今天我就在目前的项目中实现了多语言功能,下面记录我的具体实现。
1、相信很多朋友在用MVC做项目时候,都会遇到“视图必须派生自 WebViewPage 或 WebViewPage<TModel>”的错误。正如错误描述一样,MVC的视图都必须继承WebViewPage。
自定义WebViewPage类:
/// <summary>
///
/// </summary>
/// <remarks>
/// 恒通2.0 add by zhangfj 2016/12/27
/// </remarks>
/// <typeparam name="TModel"></typeparam>
public abstract class HTView<TModel> : System.Web.Mvc.WebViewPage<TModel>
{
private ILocaleStringResourceService _localeStringResourceService
{
get { return Engine.Resolve<ILocaleStringResourceService>(); }
}
private Localizer _localizer;
public Localizer Z
{
get
{
if (_localizer == null)
{
_localizer = (format, args) =>
{
var resFormat = _localeStringResourceService.GetResource(format, );
if (string.IsNullOrEmpty(resFormat))
{
return new LocalizedString(format);
}
return
new LocalizedString((args == null || args.Length == )
? resFormat
: string.Format(resFormat, args));
};
}
return _localizer;
}
}
public override void InitHelpers()
{
base.InitHelpers();
} public override string Layout
{
get
{
var layout = base.Layout; if (!string.IsNullOrEmpty(layout))
{
var filename = Path.GetFileNameWithoutExtension(layout);
ViewEngineResult viewResult = System.Web.Mvc.ViewEngines.Engines.FindView(ViewContext.Controller.ControllerContext, filename, ""); if (viewResult.View != null && viewResult.View is RazorView)
{
layout = (viewResult.View as RazorView).ViewPath;
}
} return layout;
}
set
{
base.Layout = value;
}
}
}
然后,在Views配置文件中配置WebViewPage视图派生类为我们的自定义类:
<pages pageBaseType="IOV.Application.WebBiz.HTView">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="IOV.Application.Web" />
</namespaces>
</pages>
最后,在视图中就可以使用我们自定义的WebViewPage:
<div class="login-container">
<div class="loginbox">
<div class="loginbox-title">
</div>
<div class="loginbox-or">
<div class="or">@Z("Account.userLogin")@*用户登录*@</div>
</div> <div class="loginbox-textbox">
<input type="text" class="form-control" placeholder="@Z("Account.userName")@*用户名*@" id="txtLoginName" value="admin" />
</div>
<div class="loginbox-textbox">
<input type="password" class="form-control-pwd" placeholder="@Z("Account.pwd")@*密码*@" id="txtPassWord" value="" />
</div> <div class="col-xs-12"><span class="error-info text-danger" id="lblmsgLogin" style="margin-left: 5px"></span></div> <div class="loginbox-submit" style="width: 100%; padding-left: 20px">
<input type="button" id="btnLogin" class="btn btn btn-block" onclick="DoLogin()" value="@Z("Account.login")@*登录*@">
</div>
</div>
<div class="logobox">
@@Copyright 重庆XXXXXXX公司 </div>
</div>
MVC项目中WebViewPage的实战应用的更多相关文章
- 转 mvc项目中,解决引用jquery文件后智能提示失效的办法
mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法 这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常 ...
- 谈谈MVC项目中的缓存功能设计的相关问题
本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据 ...
- 在 ASP.NET MVC 项目中使用 WebForm、 HTML
原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...
- MVC项目中如何判断用户是在用什么设备进行访问
使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为 ...
- 在已有的Asp.net MVC项目中引入Taurus.MVC
Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...
- ASP.NET MVC项目中App_Code目录在程序应用
学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这 ...
- 如何在mvc项目中使用apiController
文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...
- 在ASP.NET MVC项目中使用极验验证(geetest)
时间 2016-03-02 18:22:37 smallerpig 原文 http://www.smallerpig.com/979.html 主题 ASP.NET MVC geetest开发体 ...
- MVC 项目中为什么会有两个web.config
我们对MVC 并不陌生, 在创建MVC项目时,总会发现,在工程目录 中有两个 web.config 文件,一个是在工程的根目录下,一是在 views 下,两个web.config 中的内容也不尽相同, ...
随机推荐
- Keychain group access
Keychain group access Apr 3, 2010 · 3 minute read · Comments keychain Since iPhone OS 3.0 it has bee ...
- 个人Web工具箱&资源整理(1)
很久就想把使用的工具及收藏的资源整理一番:一是为了传达博客社区的理念:资源共享,而是方便自己及团队快速获取. 学习资源: 首推两个入门级在线参考网站. 1 w3c school. 2 Runoob.c ...
- 长平狐 Android-x86虚拟机安装配置全攻略
Android-x86虚拟机安装配置网上有很多,但是全部说明白的确不多,希望这篇文章能把主要的配置介绍给您,帮助您少走一些弯路. 本文分别针对VMWare和Virtual Box两种虚拟机介绍安装配置 ...
- js 常见弹出框学习
模拟系统的弹出框 系统自带的弹出框 总结 链接 http://blog.csdn.net/anhuidelinger/article/details/17024491 参考这个网站学习模态框的动态弹 ...
- Hibernate 随记(数据库映射流程)
ORM:Object/Relationship Mapping 对象/关系映射 实现流程: 1.项目中导入Hibernate相关类包并创建配置文件.Hibernate.cfg.xml(可 ...
- Linux 中断处理浅析
最近在研究异步消息处理, 突然想起linux内核的中断处理, 里面由始至终都贯穿着"重要的事马上做, 不重要的事推后做"的异步处理思想. 于是整理一下~ 第一阶段--获取中断号 每 ...
- 前端开发薪资之各地区对比(图文分析)(share)
发现最近大家都在关注有关前端开发的薪资问题,不同地方各有差异,今天我就总结一下发出来方便大家的查阅.(2014年) 前面给大家介绍了关于前端开发需要学习的东西,根据你掌握的技能程度,薪水是不一样的.d ...
- python 使用virtualenvrapper虚拟环境管理工具
centos 默认安装的python是2.6版本的 使用virtualenv 环境管理工具建立python虚拟环境的时候会遇到一些错误,DEPRECATION: Python 2.6 is no lo ...
- iOS 汉字拼音
获取汉字的拼音 #import <Foundation/Foundation.h> @interface NSString (Utils) /** * 汉字的拼音 * * @retur ...
- C#对象比较
http://www.veryhuo.com/a/view/42513.html ReferenceEquals:静态方法,不能重写,只能比较引用,如果有一个参数为null会返回false,不会抛出异 ...