gpt4 book ai didi

asp.net-mvc - MVC3 类验证属性

转载 作者:行者123 更新时间:2023-12-02 02:45:01 24 4
gpt4 key购买 nike

我正在创建一个无声拍卖网站。我的类有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com