MVC 6 asp-validation-summary忽略了隐藏输入验证的属性名称

时间:2017-02-10 18:46:50

标签: asp.net asp.net-mvc validation asp.net-core-mvc

我在模型Is Nothing的{​​{1}}视图中有以下标记:

Create

如果我按原样保留愚蠢的脚手架EmployeeBindingModel动作,它会将空模型传递给视图,尽管为<div asp-validation-summary="All" class="text-danger"></div> <input type="hidden" asp-for="EmployeeId" /> 键入了控制器。然后在提交时,客户端验证根本不起作用,但这是另一个问题的主题。

这个问题是为什么控制器的模型验证只返回Create的没有属性名称的以下消息?

EmployeeBindingModel

2 个答案:

答案 0 :(得分:3)

客户端jQuery验证的默认值为ignore hidden fields.

  

ignore(默认值:“:hidden”)类型:选择器。验证时要忽略的元素,只需将其过滤掉即可。使用了jQuery的not-method,因此not()接受的所有内容都可以作为此选项传递。始终忽略类型提交和重置的输入,因此禁用元素

要修复它,您可以覆盖。

<select ng-model="s.end_time" class="form-control" ng-options="option disable when s.start_time for option in config.hrs"></select>

答案 1 :(得分:0)

我相信您需要提供一个名称,以供控制器接收。

<input type="hidden" name="EmployeeId" asp-for="EmployeeId" />

如果您想使用Razor,可以使用以下内容:

@Html.HiddenFor(model => model.EmployeeId)