Как узнать, была ли установлена форма 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, она не может быть использована в качестве страницы сервера.