为什么忽略 renderAllHiddenFieldsAtTopOfForm 配置设置?

Why is the renderAllHiddenFieldsAtTopOfForm configuration setting ignored?

我遇到的问题与此问题的发布者完全相反: Why isn't "renderAllHiddenFieldsAtTopOfForm" not working?

我已将 renderAllHiddenFieldsAtTopOfForm 明确设置为 true:

<system.web>
    <pages renderAllHiddenFieldsAtTopOfForm="true" />
</system.web>

尽管如此,呈现的输出包含两个不同的部分,其中包含系统生成的隐藏字段:一个在顶部,一个在表单底部:

<div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE4NDI1MTc3MzRkZI7H1ncHbGpdCuTIWztffomjhuKqOlUg2/NLTSuTAcPt" />
</div>

<div class="aspNetHidden">
    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C2EE9ABB" />
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAATsr4X0euI6bC1nyD5GTh1SVvvE46VZo4PgfZC+nBCfTprQreIcKZCPCAR/ghE+h144RSSJ+WpNEsH2OOfrgDPYSZR3/cXf22QHuxsfDnv9/WdF+DPQdHKniJorPN8Mw6c=" />
</div>

谁能解释为什么会这样?

相关内容:这是 IIS 7 下的 ASP.NET 4.5 应用程序 运行,用 VB.NET 编写,使用 Visual Studio 2013 构建。这种行为可以在每个页面,并且无论我是否删除 renderAllHiddenFieldsAtTopOfForm 设置,或者如果我将其值设置为 truefalse.

都会发生

根据 Reference Source,renderAllHiddenFieldsAtTopOfForm 属性 仅在 InnerWriter 为 HttpWriter 时才有效。

你能检查一下你是否为 Render 方法提供了不同的编写器吗?

protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
    base.Render(new MyHtmlTextWriter()); // <<<----
}