出现错误“必须使用runat = server放置在表单标签中”,但这是

时间:2019-04-18 19:31:45

标签: c# html asp.net webforms runatserver

我收到上述错误消息。但是,有问题的页面的确确实有一个标签(在设计时)具有runat =“ server”属性,并且控件位于其中。如果我运行该项目并查看源代码,则该属性似乎消失了(不确定那部分是否正常,或者那是什么原因引起的)。

当我尝试运行RenderControl方法时,错误弹出。该页面可以很好地开始加载。有什么想法吗?

<form id="form1" runat="server">
<div id="hiddenMVR" runat="server" style="display:block;">
 // lots of other controls in here removed for brevity
</div>
</form>

后面的代码:

            StringBuilder stringBuilder = new StringBuilder();
            StringWriter stringWriter = new StringWriter(stringBuilder);
            HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
            //error occurs on RenderControl
            this.hiddenMVR.RenderControl(htmlTextWriter);

1 个答案:

答案 0 :(得分:0)

显然,以下代码解决了该问题,尽管老实说我不确定原因,因为原始错误消息不正确:

public override void VerifyRenderingInServerForm(Control control) 
{ 
    /* Confirms that an HtmlForm control is rendered for the specified ASP.NET server 
    control at run time. Used to avoid issue using RenderControl above */ 
}

显然,这会覆盖一些我不知道的内置方法,该方法正在执行导致错误的操作。不用代码覆盖它可以防止默认情况下发生的任何事情,从而消除了错误。

在其他一些帖子中提到了此“修复”,但我认为它不适用,因为错误消息与代码不一致。

我没有注意到这样做带来的任何不利问题。