0

假設我有一張積分表,您可以一次輸入0到10分。您也可以多次提交積分,但積分總數不得超過100.如果總計有90分,而您嘗試輸入11,則錯誤消息應該顯示「您已超出最大值」。這可能使用DataAnnotations嗎?我已經看過範圍驗證器,但它似乎只適用於每個條目而不是項目的總和。數據註解範圍

我如何驗證總和?

+1

請提供更多的上下文。顯示您當前的模型以及迄今爲止您嘗試解決問題的方法肯定會有所幫助。 –

+0

我想我比任何東西都想知道如果註釋是在這種情況下去的方式,或者如果我應該只專注於編寫自定義解決方案。 – user800426

回答

1

你想要做的就是保持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) 
    { 
     ... 
    } 
} 

現在,我把自由的與上面的代碼,因爲我對你的應用程序一無所知,但希望它足夠通用,你至少可以明白這一點。