我正在创建一个无声拍卖网站。我的类有一个 CurrentBidAmount 属性和一个 SuggestedBidAmount 属性。 SuggestedBidAmount 基本上是当前出价金额加上当前最小出价增量。 (因此当前出价为 10 美元,出价增量为 5 美元,则建议出价为 15 美元)。当出价者输入新的出值(value)时,我想验证新值是否至少与 SuggestedBidAmount 一样或更大。
我想在类(class)层面强制执行这一点。问题是,我不确定验证属性标签是什么,并且似乎无法在 Google 上找到它们。我肯定使用了错误的搜索词,但我找不到它们。
[Compare] 标记很接近,但它会进行逐字比较。我基本上需要将一个属性与另一个属性进行比较,并验证它是否等于或大于另一个属性。
谁能给我指出正确的方向吗?
最佳答案
您可以创建自己的自定义验证属性,只需重写其 IsValid
方法即可:
[AttributeUsage(AttributeTargets.Class)]
public class BidCompareAttribute : ValidationAttribute
{
public string CurrentBidPropertyName { get; set; }
public string MinBidIncrementPropertyName { get; set; }
public override bool IsValid(object value)
{
var properties = TypeDescriptor.GetProperties(value);
var minBidIncrement = properties.Find("MinBidIncrement", true).GetValue(value) as IComparable;
var currentBid = properties.Find("CurrentBid", true).GetValue(value) as IComparable;
return currentBid.CompareTo(minBidIncrement) >= 0;
}
}
而不是像这样使用它:
[BidCompare(CurrentBidPropertyName = "CurrentBid",
MinBidIncrementPropertyName = "MinBidIncrement")]
public class BidModel
{
public int CurrentBid { get; set; }
public int MinBidIncrement { get; set; }
}
关于asp.net-mvc - MVC3 类验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6013016/