Как узнать, была ли установлена ​​форма runat=server?

При кодировании страницы Asp.Net вы обычно добавляете атрибут runat в aspx:

<form id="form1" runat="server">

Можно ли сказать в коде, если пользователь не сделал этого, то есть он только сделал это:

<form id="form1">

Здесь форма имеет идентификатор "form1", но в моем случае я этого не знаю. Код, такой как это то, что я ищу:

if(Page.HasForm)
{
}

4 ответа

Решение

Вы можете использовать только один тег формы с "runat=server" на каждой странице.aspx. Все, что вам нужно сделать, это проверить, является ли Page.Form нулевым или нет. Если это значение равно null, то нет формы, помеченной для запуска сервера.

if (Page.Form != null)
{

}

Это часть runat="server", которая заставляет страницу.aspx обрабатывать элемент и создавать соответствующий объект на стороне сервера. Если компонент не работает на сервере, он не добавляется в иерархию элементов управления страницы.

var v = this.Form.TagName; // получает имя формы, помеченной как runat.

Конечно, если он не помечен как runat, ваш код не будет работать в любом случае...

Вы сможете получить доступ к форме из кода:

Response.Write(form1.Name);

Без runat="server" вы бы просто получили ошибку компилятора.

Когда вы кодируете в C# или Visual Basic на кодовой странице, у вас не будет доступа к объекту, для которого не установлена ​​опция runat = server.

Вы можете легко получить доступ ко всем элементам управления со страницы, используя страницу me.controls или что-то в этом роде (я не знаю точного кода, но он близок к этому), и проверить тип элемента управления, чтобы получить форму.

Зачем тебе это знать? Если страница не имеет формы runat = server, она не может быть использована в качестве страницы сервера.

Другие вопросы по тегам