我有一個代表被分裂法案雙方的總賬單和列表視圖模型。各方分攤的比例各佔一定比例(例如:甲方佔50%,乙方佔20%,丙方佔30%)。MVC3驗證總計元素列表
這個模型看起來是這樣的:
public class BillModel
{
public int Total { get; set; }
public List<BillPartyModel> Parties { get; set; }
}
public class BillPartyModel
{
public string Name { get; set; }
public int SplitPercentage { get; set; }
}
基本上,我想,以驗證SplitPercentage
各方合計恰好100.我最初很想自定義驗證屬性添加到SplitPercentage
,但我m不知道如何將驗證器中的所有值相加。我可以在主模型中添加一個自定義驗證屬性Parties
(以及如何工作)?或者有人知道更好的方法來做到這一點?
編輯: 我的建議之下,結束了這個(使用的EqualTo標籤DataAnnotationsExtensions):
型號
[EqualTo("TotalPercent", ErrorMessage = "Percentages do not add up to 100%.")]
public int SplitPercentage { get { return this.Allocations.Sum(a => a.Allocation); } }
public int TotalPercent { get { return 100; } }
查看
@Html.HiddenFor(m => m.SplitPercentage)
@Html.ValidationMessageFor(m => m.SplitPercentage)
@Html.EditorFor(m => m.BillPartyModel)
...然後我只是使用JavaScript OnChange事件來更新AllocationTotal以獲得客戶端驗證。
您可以添加此計算性能到您的視圖模型,並添加VA lidation屬性。這將觸發服務器端驗證。 – fredlegrain
我確實喜歡fredlegrain說過的,並以上面提到的信息結束。謝謝大家! – jrizzo