我可以在编辑时禁用远程属性来检查重复项吗?

时间:2016-06-13 08:12:51

标签: asp.net-mvc

在典型的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>
...

0 个答案:

没有答案