получение ошибки 'должно быть помещено в тег формы с помощью runat = server', но это - PullRequest
0 голосов
/ 18 апреля 2019

Я получаю сообщение об ошибке выше.Однако на рассматриваемой странице действительно есть тег с атрибутом 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 голосов
/ 25 апреля 2019

Видимо, приведенный ниже код устраняет проблему, хотя, честно говоря, я не уверен, почему, поскольку исходное сообщение об ошибке не является точным:

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 */ 
}

Очевидно, это переопределяет некоторый встроенный метод, о котором я не знаю, который делает что-то, что вызывает ошибку. Переопределение без кода предотвращает все, что происходит по умолчанию, и, таким образом, устраняет ошибку.

Это "исправление" упоминалось в некоторых других постах, но я не думаю, что оно применимо, потому что сообщение об ошибке не совпадает с кодом.

Я не заметил каких-либо вредных проблем от этого.

...