予測されるように、検証属性のセット・エラー・メッセージが表示されていない、私はカスタム検証属性を持っている:カスタム
public class RequireIfPropertyIsFalseAttribute : ValidationAttribute
{
private string basisProperty { get; set; }
public RequireIfPropertyIsFalseAttribute(string basisProperty)
{
this.basisProperty = basisProperty;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var basisProp = validationContext.ObjectType.GetProperty(basisProperty);
var isFalse = !(bool)basisProp.GetValue(validationContext.ObjectInstance, null);
if (isFalse)
{
if (value == null || (value.GetType() == typeof(string) && string.IsNullOrEmpty(((string)value).Trim())))
return new ValidationResult(this.ErrorMessage);
}
return ValidationResult.Success;
}
}
を私は両方のモデルの特性のためにそれを使用します。
public bool NoAgeProvided { get; set; }
[RequireIfPropertyIsFalse(nameof(NoAgeProvided), ErrorMessage = "This is required")]
[Display(Name = "Age")]
public int Age { get; set; }
public bool NoNameProvided { get; set; }
[RequireIfPropertyIsFalse(nameof(NoNameProvided), ErrorMessage = "This is required")]
[Display(Name = "Name")]
public string Name { get; set; }
検証すると、名前の検証メッセージショー"これは必須です"。ただし、Ageプロパティでは、検証メッセージに「Ageフィールドは必須です」と表示されます。私は間違って何をしていますか? ErrorMessageをどのように表示できますか?
私はそれが事実だと思いました。しかし、フィールドをNULL値にすることは、関連するデータベーステーブルのカラムがnull属性でなければならないことを意味します。私はあなたが提供したリンクを読むでしょう。どうもありがとうございます! – TambaySaPinas
ビューのデータモデルではなく、ビューモデルを常に使用するように、データを編集します。 –
いずれにしても、dbカラムに何も格納されていないと値が0になっても、それは意味がありません。 –