asp.net-mvc – asp.net mvc输入/模型验证多语言
发布时间:2020-12-16 04:16:53 所属栏目:asp.Net 来源:网络整理
导读:我对asp.net mvc很新,而且知道我正试图找出答案 做输入验证的好习惯. 在项目中,我们将使用实体框架,您可以在其中添加 以下列方式对属性进行数据注释: [Required(ErrorMessage = "Please enter a product name")][Column]public string Name { get; set; }
我对asp.net mvc很新,而且知道我正试图找出答案
做输入验证的好习惯. 在项目中,我们将使用实体框架,您可以在其中添加 [Required(ErrorMessage = "Please enter a product name")] [Column] public string Name { get; set; } 这很不错,但我们有一个多语言网站(像大多数网站一样), 感谢您的投入. 更新我已经尝试了Phil Haack网站上的代码 如果我为数据注释填写以下内容: [MetadataType(typeof(IncidentsMetaData))] public partial class INCIDENTS { private class IncidentsMetaData { [Required(ErrorMessageResourceType = typeof(CustomResourceProviders.DBResourceProviderFactory),ErrorMessageResourceName="1277")] public string SUBJECT { get; set; } } } 然后我收到以下错误: 当然没有这样的属性,它应该由函数访问. 解决方法
您可以从
RequiredAttribute继承自定义属性,并为属性
ErrorMessage设置自己的本地化消息.它可能如下所示:
public class LocalizedRequiredAttribute : RequiredAttribute { public LocalizedRequiredAttribute() : base() { // prefix for the selection of localized messages from datebase // e.x. for "Required" string,localized messages will be: "RuRequired","EnRequired" var currentCulture = CultureInfo.CurrentCulture.TwoLetterISOLanguageName; // logic to get value from datebase // e.x. using Linq2Sql using (var context = new dateBaseContext()) { var query = (from x in context.LocalizedStrings where x.NameKey == currentCulture + "Required" select x.NameValue).SingleOrDefault(); if (query != null) { base.ErrorMessage = query; } else { base.ErrorMessage = "UndefinedName"; } } } } 您也从DisplayNameAttribute继承并覆盖DisplayName属性: public class LocalizedDisplayNameAttribute : DisplayNameAttribute { public LocalizedDisplayNameAttribute(string displayNameKey) : base(displayNameKey) { } public override string DisplayName { get { if (!string.IsNullOrEmpty(base.DisplayName)) { // prefix for the selection of localized messages from datebase // e.x. if DisplayName is "Country",localized messages will be: "RuCountry","EnCountry" var currentCulture = CultureInfo.CurrentCulture.TwoLetterISOLanguageName; // logic to get value from datebase // e.x. using Linq2Sql using (var context = new dateBaseContext()) { var query = (from x in context.DisplayNames where x.DisplayNameKey == currentCulture + base.DisplayName select x.DisplayNameValue).SingleOrDefault(); if (query != null) { return query; } return base.DisplayName; } } return "UndefinedName"; } } } 您还可以创建继承自ValidationAttribute类的自定义验证属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – 动态创建的控件未触发事件处理程序
- asp.net-mvc-3 – 如何从控制器外部访问登录用户?
- asp.net-mvc – 为什么class属性在WebAPI中不起作用?
- asp.net-web-api – AttributeRouting不能与HttpConfigurat
- asp.net-mvc – 在存储库之间调用方法 – 存储库模式
- asp.net core系列 51 Identity 授权(下)
- asp.net-web-api – webapi中的attributerouting限制
- 缺少ASP.NET_SessionId
- asp.net-mvc – 无法获得有效的Unity Session Lifetime Man
- Asp.net mvc 知多少(一)
推荐文章
站长推荐
- ASP.NET显示SVN版本号
- .NET Core的日志[2]:将日志输出到控制台
- ASP.NET MVC筛选器之特殊筛选器IOverrideFilter
- asp.net-mvc-3 – 货币格式化MVC
- asp.net – 如何使WebMethods序列化ExpandoObjec
- asp.net-mvc-4 – Durandal.js:更改每个区域的导
- asp.net-mvc-3 – EntityFramework类的AllowHtml
- asp.net-mvc-2 – ASP.NET MVC SiteMap
- https://github.com/hoyuhub
- asp.net – IIS重新编译ASP NET网站
热点阅读