数据注释范围



假设,我有一个积分表,您可以一次输入 0 到 10 个积分。您也可以多次提交积分,但积分总和不得超过 100。如果您总共有 90 分,并且您尝试输入 11 分,则错误消息应显示"您已超过最大值"。使用数据注释可以做到这一点吗?我已经看到了范围验证器,但它似乎仅适用于每个条目,不适用于项目的总和。

如何验证总和?

您要做的是保留 Range 属性,该属性将用于涵盖大多数场景,然后显式处理边缘情况:

[HttpPost]
public ActionResult AddPoints(int points)
{
    var currentPoints = repository.GetPointsForUser(User.Identity.Name);
    if (currentPoints + points > 100)
    {
        ModelState.AddModelError("points", string.Format("The points you specified would exceed the maximum of 100, please enter {0} or fewer.", 100 - currentPoints))
    }
    if (ModelState.IsValid)
    {
        ...
    }
}

现在,我对上面的代码采取了一些自由,因为我对您的应用程序一无所知,但希望它足够通用,您至少可以理解这一点。

最新更新