在典型的CRUD场景中,如果表中包含主键的代码而不是id,我将远程属性添加到模型中,以在创建记录时检查重复项。
我遇到的问题是在编辑记录时使用相同的模型,这会强制进行相同的重复验证检查,即使我在Edit.cshtml中删除了代码中的ValidationMsgFor,保存也不起作用要添加到模型的属性。
如果我删除了远程属性,那么它可以工作(但是create不会检查重复项)。我不想要两个模型,感觉非常混乱。
除了手动执行Ajax调用以验证之外,是否有人知道任何其他选择?即我可以在编辑时禁用远程属性吗?
感谢阅读。
示例代码:
在Department模型中(DepartmentCode是表上的主键,即没有整数id):
...
[Remote("DuplicateCheck", "Department", ErrorMessage = "Duplicate Found", HttpMethod="Post")]
[Display(Name = "Department Code")]
public string DepartmentCode { get; set; }
...
在部门控制器中:
...
[HttpPost]
public JsonResult DuplicateCheck(string departmentCode)
{
return Json(!_departmentRepository.Exists(departmentCode));
}
...
在视图中(可以创建或编辑):
...
<div class="form-group">
@Html.LabelFor(model => model.DepartmentCode, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.DepartmentCode, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.DepartmentCode, "", new { @class = "text-danger" })
</div>
</div>
...