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

时间:2014-01-07 16:44:17

标签: asp.net asp.net-mvc

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

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

示例:

var attributes = htmlHelper.GetUnobtrusiveValidationAttributes(propertyName);
var attributes2 = htmlHelper.GetUnobtrusiveValidationAttributes(propertyName);

attributes2为空。

这对我来说是一个问题,因为我在渲染 fieldA 时检查 fieldB 的验证属性,但是当渲染 fieldB 时,属性消失了

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

提前致谢

1 个答案:

答案 0 :(得分:6)

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

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

Html.ViewContext.FormContext.RenderedField(ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName), false);