在 asp.net mvc 上有一个站点。有一个页面添加了 2 个字段。第一个字段可以在 EditorFor 中输入或从下拉列表中选择,第二个字段必须输入新的。
例如,如果下拉列表被禁用。
@Html.DropDownListFor(i => i.Mark.Id, ViewBag.marks as SelectList, new { @id = "exMark", @class = "form-control", @disabled = "disabled"* })
@Html.ValidationMessageFor(i => i.Mark.MarkName, "", new { @class = "text-danger" })
然后在服务器上的 ModelState 中有 2 个字段用于验证,这两个字段都应该是 EditorFor。
然后,如果我填写它们,则验证将通过。
但是,如果我禁用了 EditorFor 并且选择了下拉列表中的第一个字段,并且在这种情况下假定不应感知 EditorFor 中第一个字段的值。然后由于某种原因,ModelState 中的服务器上的所有 3 个字段都用于验证,事实证明,即使我输入了两个字段并且禁用的 EditorFor 保持为空,验证也将不起作用,因为它也被考虑在内。为什么会这样?就模型验证而言,禁用对 EditorFor 不起作用。
如果输入字段被禁用,这是一个屏幕:
请告诉我可能出了什么问题?



我不知道我是否使用了正确的方法。我学习 asp-net 不到一个月,遇到了几乎同样的问题。如果我需要从验证检查中排除一个属性,那么我使用以下内容:
modelPropertyExclude要排除的属性在哪里。我画了一个简单的例子。假设我们有以下模型:
索引.cshtml:
和控制器:
如果 Id 字段留空,那么都一样
ModelState.IsValid = true选择了取消服务器上的必填字段和客户端验证的选项。