为什么HtmlHelper.GetUnobtrusiveValidationAttributes在调用时会删除属性?

Mig*_*ruz 3 asp.net asp.net-mvc

在asp.net MVC中,我想检索某些字段的验证属性.

为此,我使用了HtmlHelper.GetUnobtrusiveValidationAttributes()方法.第一次被调用时,它会按预期返回一组属性.但是,如果第二次调用,则属性为空.

例:

var attributes = htmlHelper.GetUnobtrusiveValidationAttributes(propertyName);
var attributes2 = htmlHelper.GetUnobtrusiveValidationAttributes(propertyName);
Run Code Online (Sandbox Code Playgroud)

attributes2为空.

这是我的问题,因为我检查的验证特性fieldB而呈现FIELDA但是当fieldB呈现,属性都没有了.

这是一种已知行为吗?我错过了什么吗?如何在GetUnobtrusiveValidationAttributes调用之间保留验证属性?

提前致谢

mas*_*sty 6

这是设计的.Html.ViewContext.FormContext包含它认为已呈现的字段列表; 当您GetUnobtrusiveValidationAttributes第一次调用它将字段标记为已渲染时,后续调用将返回一个空集合.

您可以通过执行以下操作将该字段设置为未呈现:

Html.ViewContext.FormContext.RenderedField(ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName), false);
Run Code Online (Sandbox Code Playgroud)