【发布时间】:2011-05-21 04:36:11
【问题描述】:
美好的一天!
我有以下用于登录表单的 ViewModel 类:
using System.ComponentModel.DataAnnotations;
...
public class UserLogin : IDataErrorInfo
{
[Required]
[DisplayName("Login")]
public string Login { get; set; }
[Required]
[DisplayName("Password")]
public string Password { get; set; }
[DisplayName("Remember Me")]
public bool RememberMe { get; set; }
#region IDataErrorInfo Members
// This will be a Model-level error
public string Error
{
get
{
if (!WebUser.CanLogin(Login, Password))
{
return Resources.ValidationErrors.InvalidLoginPassword;
}
else
{
return String.Empty;
}
}
}
// All is handled by DataAnnotation attributes, just a stub for interface
public string this[string columnName]
{
get
{
return string.Empty;
}
}
#endregion
}
这个在Global.asax:
DefaultModelBinder.ResourceClassKey = "BinderMessages";
ValidationExtensions.ResourceClassKey = "BinderMessages";
资源文件BinderMessages.resx 放置在 App_GlobalResources 中,它有两个键 InvalidPropertyValue(有效)和 PropertyValueRequired,无效并给我默认消息。
问题:是否可以修改此消息,或者它与 DataAnnotations 相关联?
我找到了很多关于此的帖子,但没有解决方案。现在我只是回退到这个:
[Required(ErrorMessageResourceType = typeof(Resources.ValidationErrors), ErrorMessageResourceName = "Required")]
【问题讨论】:
-
但问题是,如果您将登录名和密码留空怎么办?程序因未设置对象而中止。
-
你为什么这么认为?无论如何,模型绑定器都会实例化一个
UserLogin对象实例。 -
快 5 年了,似乎仍然不适用。
global.asax中定义的资源文件中仍然只有4个key可以使用
标签: asp.net-mvc asp.net-mvc-2 viewmodel modelbinders