我正在为无声拍卖创建一个网站。我的类有一个CurrentBidAmount属性和一个SuggestedBidAmount属性。 SuggestedBidAmount基本上是当前的出价金额加上当前的最低出价增量。 (因此目前的出价为10美元,出价增量为5美元,建议出价为15美元)。当投标人输入新的出价值时,我想验证新值是否至少与SuggestedBidAmount一样多。
我想在班级强制执行此操作。问题是,我不确定验证属性标签是什么,似乎无法在Google上找到它们。我必须使用错误的搜索字词,但我找不到它们。
[Compare]标签已关闭,但这是逐字比较的。我基本上需要将一个属性与另一个属性进行比较,并验证它是否等于或大于另一个属性。
任何人都可以指出我正确的方向吗?
答案 0 :(得分:2)
您可以创建自己的自定义验证属性,并覆盖其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; }
}