asp.net-mvc – asp.net mvc输入/模型验证多语言
|
我对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类的自定义验证属性. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net cookie,身份验证和会话超时
- 从ASP.Net MVC视图访问应用程序设置
- ASP.NET MVC授权:角色的权限
- asp.net – 自动化Web应用前端性能测试的替代方案
- asp.net-mvc – “安全感知”动作链接?
- asp.net – 导致GridView无效回发的TemplateField按钮
- asp.net-mvc – Visual Studio在剃刀语句中显示语法错误但有
- asp.net-web-api2 – 如何创建HttpRequestHeaders类的实例
- iis-7 – ASP.NET MVC4在IIS7集成模式下不处理POST请求,但在
- asp.net-mvc – 使用ViewModels和对System.Web.Mvc的引用是
- asp.net – Internet Explorer中的“通过电子邮件
- asp.net-mvc – 升级到MVC 3:CS0103:名称’视图
- ASP.NET – 将网站投入生产的基本清单
- asp.net-mvc – 异步HttpModule MVC
- asp.net – 本地化mvc中的默认模型验证2
- 实体框架 – 在Db初始化程序的种子方法中创建Asp
- asp.net-mvc – ASP.NET MVC 3列表到IEnumerable
- asp.net-mvc – 使用像Stackoverflow这样的查询字
- asp.net-mvc-4 – 使用asp.net MVC4,如何在默认情
- asp-classic – 检查VBScript中是否存在Object
