asp.net-mvc – 在使用ModelBinder之前更改文化
发布时间:2020-12-16 00:15:25 所属栏目:asp.Net 来源:网络整理
导读:我想用不同的语言创建一个网站.我已经读过我可以创建一个 ActionFilter,但我有一个小问题: 我必须创建一个自定义的ModelBinder才能使用英语和德语数字格式(123,456,789.1与123.456.789,1) public class DecimalModelBinder : DefaultModelBinder{ public ov
我想用不同的语言创建一个网站.我已经读过我可以创建一个
ActionFilter,但我有一个小问题:
我必须创建一个自定义的ModelBinder才能使用英语和德语数字格式(123,456,789.1与123.456.789,1) public class DecimalModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext) { string key = bindingContext.ModelName; var v = ((string[])bindingContext.ValueProvider.GetValue(key).RawValue)[0]; float outPut; if (float.TryParse(v,NumberStyles.Number,System.Globalization.CultureInfo.CurrentCulture,out outPut)) return outPut; return base.BindModel(controllerContext,bindingContext); } } 此ModelBinder使用当前文化来决定使用哪种格式. 如何在ModelBinder变为活动状态之前更改文化? 解决方法
您可以实现IHttpModule并在BeginRequest中设置文化,如
here所示.
void context_BeginRequest(object sender,EventArgs e) { // eat the cookie (if any) and set the culture if (HttpContext.Current.Request.Cookies["lang"] != null) { HttpCookie cookie = HttpContext.Current.Request.Cookies["lang"]; string lang = cookie.Value; var culture = new System.Globalization.CultureInfo(lang); Thread.CurrentThread.CurrentCulture = culture; Thread.CurrentThread.CurrentUICulture = culture; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-mvc – 在ASP.NET MVC应用程序中记录用户
- asp.net – 我如何单元测试EntitySetController
- asp.net-mvc – 当model是父模型上的属性且为nul
- asp.net – 提供的URI方案’https’无效;预期’h
- asp.net – EF,UoW和Repository – 何时在WebFor
- asp.net-mvc – Resharper导航到MVC视图
- asp.net-mvc – POST后重定向不会更改URL
- asp.net-mvc-3 – 无法从Orchard模块中的项目文件
- asp.net – 在运行时更改SqlDataSource.SelectCo
- 一步步搭建自己的博客 .NET版(2、评论功能)
热点阅读