0
xml 구성에서 사용자 정의 속성을 첨부하고 싶습니다. 내가 모델을 만들 수 있습니다데이터 주석 및 xml의 사용자 정의 속성
public partial class User
{
public Nullable<int> UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public Nullable<int> salary { get; set; }
}
[MetadataType(typeof(CUserAttributes))]
public class Cuser : User
{
public Nullable<bool> IsRequire { get; set; }
}
//[Serializable]
public class CUserAttributes
{
[Required]
public Nullable<bool> IsRequire { get; set; }
[Display(Name="My UserId")]
[RequiredIf(IsRequiredPropertyName = "IsRequire", ErrorMessage = "required.")]
public Nullable<int> UserId { get; set; }
[RequiredIf(IsRequiredPropertyName = "IsRequire", ErrorMessage = "required.")]
public string UserName { get; set; }
[RequiredIf(IsRequiredPropertyName = "IsRequire", ErrorMessage = "required.")]
public string Password { get; set; }
[RequiredIf(IsRequiredPropertyName = "IsRequire", ErrorMessage = "required.")]
public Nullable<int> salary { get; set; }
}
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class RequiredIf : ValidationAttribute, IClientValidatable
{
public string IsRequiredPropertyName { get; set; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var isRequiredName = validationContext.ObjectInstance.GetType().GetProperty(this.IsRequiredPropertyName);
var isRequiredNameValue = isRequiredName.GetValue(validationContext.ObjectInstance, null);
if (isRequiredNameValue != null)
{
if (Convert.ToBoolean(isRequiredNameValue) == true)
{
if (value == null)
{
return new ValidationResult(this.ErrorMessage);
}
}
}
else if (isRequiredNameValue == null)
{
throw new Exception("RequiredIf property value is not found");
}
return ValidationResult.Success;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule mcvr = new ModelClientValidationRule();
mcvr.ValidationType = "requiredif";
mcvr.ErrorMessage = this.ErrorMessage;
mcvr.ValidationParameters.Add("isrequiredpropertyname", this.IsRequiredPropertyName);
return new List<ModelClientValidationRule> { mcvr };
}
}
, 클래스 다음 사용자 정의 속성 클래스 속성,하지만 지금은 주석 디스플레이, RequiredIf XML 구성에서 (사용자 정의 속성) 즉 그 데이터를 추가 할 수 있습니다.