ASP.NET MVC-JQuery-验证可编辑表列的唯一值

ASP.NET MVC-JQuery-验证可编辑表列的唯一值,jquery,asp.net-mvc,validation,asp.net-mvc-4,Jquery,Asp.net Mvc,Validation,Asp.net Mvc 4,我已经使用ASP.NET MVC razor和JQuery。我有下面的型号 public class Employee { public string Id { get; set; } public string Name { get; set; } [Required] public int Number { get; set; } } 我把它渲染成一张桌子。数字字段是可编辑的输入字段。可以在表

我已经使用ASP.NET MVC razor和JQuery。我有下面的型号

 public class Employee
    {
        public string Id { get; set; }
        public string Name { get; set; }
        [Required]        
        public int Number { get; set; }
    }
我把它渲染成一张桌子。数字字段是可编辑的输入字段。可以在表中添加和删除行。添加行时,“数字”字段为空,可以为其分配一个数字

@model List<Models.Employee> 

 <thead>....
 </thead>
        <tbody>
        @for (int i = 0; i < Model.Count; i++)
        {
            <tr>
                 <td>...
                <td>
                    @Html.TextBoxFor(m => m[i].Number, new { @id ="", @title = "Number", @class = "textBox", @autocomplete = "false"})
                    @Html.ValidationMessageFor(m => m[i].Number)
                </td>                   
            </tr>
        }
        </tbody>
@型号列表
....
@for(int i=0;im[i].Number,新{@id=”,@title=“Number”,@class=“textBox”,@autocomplete=“false”})
@Html.ValidationMessageFor(m=>m[i].Number)
}

我想在保存之前验证数字列中的所有数字是否唯一。我正在使用JQuery进行不引人注目的验证。我在MVC中没有看到[唯一的]数据注释?我想知道验证表中所有数字字段是否唯一的最佳方法是什么,以及如何将其与表单验证联系起来,即如果存在非唯一值,表单验证应失败。我所需要的只是客户端验证。

没有可处理此问题的内置验证属性。一种方法是处理表单
.submit()
事件,如果值不唯一,则取消事件。为属性的每个文本框指定一个类名(例如)
class=“number”
,并在视图中包含一个用于显示错误消息的元素

<div id="uniqueerror" class="field-validation-error"></div>
您还可以处理文本框
.change()
事件以清除错误消息

旁注:您也应该始终在服务器上进行验证。客户端验证是一个不错的奖励,可以改善用户体验,但可以轻松绕过。服务器端验证可以是

var numbers = model.Select(m => m.Number);
if (numbers.Count() != numbers.Distinct().Count())
{
  ModelState.AddModelError("", "The numbers must be unique");
}

您可以通过远程验证进行检查对不起,所有员工都在视图中的表上。服务器端没有我要检查的内容。我只需要客户端验证。是否要检查该数字在数据库中是否唯一,对吗?请尝试处理form.submit事件并使用javascript自己检查值。。您不需要对此进行不引人注目的验证,您仍然应该检查服务器端。
var numbers = model.Select(m => m.Number);
if (numbers.Count() != numbers.Distinct().Count())
{
  ModelState.AddModelError("", "The numbers must be unique");
}