在使用启用了不显眼验证的 ASP.NET MVC 时,我曾多次需要将 ID 作为隐藏字段嵌入到 Razor 表单中。我学会了始终包含验证消息,例如:
@Html.HiddenFor(x => x.ParentId)
@Html.ValidationMessageFor(x => x.ParentId)
如果验证消息被忽略,这将在提交时触发 javascript 错误,因为默认情况下隐藏字段包含不显眼的验证属性,需要相应的验证错误消息。我意识到我可以通过手动编码字段来获得我正在寻找的 html 输出:
<input data-val="false" id="ParentId" name="ParentId" type="hidden" value="@Model.ParentId" />
但是,如果我采用这种方法,我将失去使用InputExtensions.HiddenFor
辅助方法的好处。有什么方法可以简单地使用扩展方法而不产生 JavaScript 错误?
编辑:
这是一个 jquery 验证问题。我的 jquery 验证脚本卡在 1.8.1 版上(见下面的注释)。我手动更新到 jquery.validate 1.11.1,问题就消失了。
注意:
jQuery validate 没有更新的原因是 NuGet 没有安装原始的 jquery validate 1.8.1 脚本。在这种情况下,NuGet 会检测到库并提供更新,但执行更新时不会替换原始脚本。NuGet 将其视为非致命警告。故事的寓意:阅读所有 NuGet 输出!