asp.net-mvc - 复杂类中列表项的Asp.net mvc自定义验证
问题描述
我在视图中显示带有详细信息的记录(使用 asp.net mvc)。用户必须输入序列号并回发视图。我想检查用户是否犯了错误,并且所有序列号在详细列表中都是唯一的。如果序列号被意外插入两次,我想向用户指出包含这些重复序列号的确切字段。
我有这些类(它们更复杂):
public class Record
{
public long ID { get; set; }
public List<Detail> Details { get; set; }
}
public class Detail
{
public long ID { get; set; }
public string SerialNo { get; set; }
}
我尝试使用自定义验证属性,但我无法从详细视图内部访问整个列表来检查这是否是唯一的序列号。
如果我在 Record 类中的 Details 上使用验证属性,
[SerialNoShouldBeUnique]
public List<Detail> Details { get; set; }
我可以检查事实并向用户表明存在重复,但我不能准确地将这些细节标记为错误的。
我找到了验证整个详细信息列表并遍历元素并使用 Detail[i] 索引添加验证错误的地方,但是我使用这种类型的项目索引在视图中显示详细信息,因此我无法轻松访问这些索引。
我可以在控制器操作中检查这些序列号。如果我找到重复项,遍历 ModelState,找到 Details[aa..-..xx].SerialNo 的那些键并手动添加错误。但我不喜欢这种方法,最好使用验证(服务器端)。
解决方案
推荐阅读
- c# - 计算公差值
- c++ - 如何在 C++ 中从文件中读取字符数组(有一些空间)
- c# - 如何使用 EF Core 3 获取 PostgreSQL 中的平均日期差异
- mongodb - 如何使用 pymongo 在 MongoDB 上安全工作?
- r - 在R中按顺序从多个变量分配案例
- angular - 使用docker运行时角度应用程序不浏览
- reactjs - 反应状态正在改变但没有反映在屏幕上?
- apache-spark - 防止 Delta 表合并创建大量小文件?
- c# - Linq to Entity 无法翻译
- javascript - 在 JavaScript 或 jQuery 中识别具有多个空值但具有单个数字类型值/元素的数组