我遇到了这个问题的海报的完全相反的问题: 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应用程序,使用Visual Studio 2013构建的VB.NET编写。可以在每个页面上观察到此行为,无论我删除renderAllHiddenFieldsAtTopOfForm
都会发生这种情况是否设置,或者我将其值设置为true
或false
。
答案 0 :(得分:1)
根据Reference Source,只有当InnerWriter是HttpWriter时,才会尊重renderAllHiddenFieldsAtTopOfForm属性。
你能检查一下你是否给Render方法提供了不同的编写器吗?
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
base.Render(new MyHtmlTextWriter()); // <<<----
}