如何将MVC3中的验证消息本地化 [Required(ErrorMessage = "Message")][Display(Name="Username")]public string Name{get;set;}如何让Message和Username可以是引用资源中的字段? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那你需要自己写Filter类,以及使用自己的Attribute了。 验证信息可以直接使用以下方式:[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(Resources.Admin))]public string Name{get;set;}但必须在资源文件里添加RequiredField这个资源key,至于display,我在此可提供一个filter:/// <summary> /// Localized display attribute name, get the value from resources file /// </summary> public class LocalizedDisplayName : DisplayNameAttribute { private string _defaultName = ""; public Type ResourceType { get; set; } public string ResourceName { get; set; } public LocalizedDisplayName(string defaultName) { _defaultName = defaultName; } public override string DisplayName { get { PropertyInfo p = ResourceType.GetProperty(ResourceName); if (p != null) { return p.GetValue(null, null).ToString(); } else { return _defaultName; } } } }在实体类调用:[LocalizedDisplayName("Name", ResourceName = "Name", ResourceType = typeof(Resources.Admin))]public string Name{get;set;}如果资源文件没有此KEY,就默认使用"Name"来显示了 [LocalizedDisplayName("Name", ResourceName = "Name", ResourceType = typeof(Resources.Admin))]他好像访问不到App_GlobalResources里面的字段始终是默认值 没理由啊,应该是可以的,我现在都这样使用的。你是读取不了其他语言还是说资源文件里的值都读取不了?再不行的话你就设一个断点调试一下,看是否哪里写错了,代码运行时有没进入到此filter中 进去了 但是它找不到资源中的KEY 我记得之前我用的 说是App_GlobalResources不公开什么的。 是不是资源文件还有命名规范的原因,但我这个资源文件是默认的 按说不用加什么语言标识吧 PropertyInfo p = ResourceType.GetProperty(ResourceName);断点执行 这里貌似也取道了ResourceName的值,但是p一直为Null DataList数据绑定——字数限制 由于目标机器积极拒绝,无法连接。 问个JS问题:如何使激发事件后页面回到最上边? 请问设了 标识增量为1 的字段 如何 让其删除了全部记录后 新添的记录从新从1开始。 页面刷新时 滚动条的位置不变如何实现 谢 怎样使自己的ASPX页面生成或模拟成静态的HTML页面? 跪求:将基于xforms的表单转换成Html格式的软件(基于C#) 高难度动作:在iframe中如何弹出子窗口,各位高手请进(分不多,高难动作) 请教!如何获得窗体上所有控件!! 请教有关做论坛的问题 如何实现像新浪微博在文本框实现@就有好友出现 求上传控件带进度条支持大容量能批量上传
[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(Resources.Admin))]
public string Name{get;set;}
但必须在资源文件里添加RequiredField这个资源key,至于display,我在此可提供一个filter:
/// <summary>
/// Localized display attribute name, get the value from resources file
/// </summary>
public class LocalizedDisplayName : DisplayNameAttribute
{
private string _defaultName = ""; public Type ResourceType { get; set; } public string ResourceName { get; set; } public LocalizedDisplayName(string defaultName) { _defaultName = defaultName; } public override string DisplayName
{
get
{
PropertyInfo p = ResourceType.GetProperty(ResourceName); if (p != null)
{
return p.GetValue(null, null).ToString();
}
else
{
return _defaultName;
}
}
}
}
在实体类调用:
[LocalizedDisplayName("Name", ResourceName = "Name", ResourceType = typeof(Resources.Admin))]
public string Name{get;set;}
如果资源文件没有此KEY,就默认使用"Name"来显示了
[LocalizedDisplayName("Name", ResourceName = "Name", ResourceType = typeof(Resources.Admin))]
他好像访问不到App_GlobalResources里面的字段始终是默认值
是不是资源文件还有命名规范的原因,但我这个资源文件是默认的 按说不用加什么语言标识吧
断点执行 这里貌似也取道了ResourceName的值,但是p一直为Null