我正在视图中显示带有详细信息的记录(使用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]索引遍历元素并添加了验证错误,但是我正在使用this type of item indexing在视图中显示详细信息,因此我无法轻松访问这些索引。 >
我可以在控制器操作中检查那些序列号。如果发现重复,请遍历ModelState,找到Details [aa ..- .. xx] .SerialNo的那些键,然后手动添加错误。但是我不喜欢这种方法,最好使用验证(服务器端)。