안녕하세요!기본값을 변경하십시오. "{0} 필드가 필요합니다"(궁극적 인 해결 방법)
나는 로그인 양식에 사용하는 다음 뷰 모델 클래스했습니다 Global.asax
에
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
}
그리고이 :
DefaultModelBinder.ResourceClassKey = "BinderMessages";
ValidationExtensions.ResourceClassKey = "BinderMessages";
리소스 파일 BinderMessages.resx
내부 배치 (이 두 개의 키 InvalidPropertyValue
있다 App_GlobalResources한다 어떤 작품) 및 PropertyValueRequired
하지 않으며 나를 기본 메시지를 제공합니다.
질문 :이 메시지를 수정할 수 있습니까, 아니면 DataAnnotations에 연결되어 있습니까?
나는 이것에 대해 많은 게시물을 찾았지만 해결책은 찾지 못했습니다. 지금은 그냥이에 폴백 (fallback) :
[Required(ErrorMessageResourceType = typeof(Resources.ValidationErrors), ErrorMessageResourceName = "Required")]
문제가 있지만 왼쪽으로, 당신은 로그인과 암호를 비워두면 무엇인가? 프로그램이 설정되지 않은 개체로 중단됩니다. – Fandango68
왜 그렇게 생각하니? 모델 바인더는 어쨌든'UserLogin' 객체 인스턴스를 인스턴스화합니다. – artvolk
거의 5 년이며 아직 적용되지 않는 것으로 보입니다. 'global.asax'에 정의 된 리소스 파일에서 사용할 수있는 키는 여전히 4 개뿐입니다. – mcy