Question

Lors du codage d'une page Asp.Net, vous ajoutez généralement un attribut runat dans le ASPX:

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

Est-il possible de dire dans le code sous-jacent si l'utilisateur n'a pas fait savoir qu'ils ne l'ont fait:

<form id="form1">

Ici, la forme a l'id « form1 » mais dans mon cas, je ne sais pas. Code derrière ce genre est ce que je cherche:

if(Page.HasForm)
{
}
Était-ce utile?

La solution

Vous ne pouvez jamais avoir une étiquette de forme avec « runat = server » sur elle par page .aspx. Tout ce que vous devez faire est de vérifier si Page.Form est nulle ou non. Si elle est nulle, alors il n'y a aucune forme qui a été marqué à Runat serveur.

if (Page.Form != null)
{

}

est la partie runat = « serveur » qui rend le processus de page .aspx un élément et créer sur le côté serveur d'un objet correspondant. Si un composant ne fonctionne pas sur le serveur, il est pas ajouté à la hiérarchie de contrôle de la page.

Autres conseils

var v = this.Form.TagName; // récupère le nom de la forme qui est maked comme runat.

Bien sûr, si ce ne est pas MAKED comme runat alors votre code derrière ne fonctionne pas de toute façon ...

Lorsque vous code en C # ou Visual Basic dans la page de code, vous ne pourrez pas accéder à l'objet qui n'ont pas l'option runat = server jeu.

Vous pouvez facilement accéder à toutes les commandes à partir d'une page à l'aide de la page ou Me.Controls quelque chose du genre (je ne sais pas le code exact, mais il est proche de cela) et vérifier le type de contrôle pour obtenir la forme .

Pourquoi avez-vous besoin de savoir? Si une page ne dispose pas d'un runat = forme de serveur, il ne peut pas vraiment être utilisé comme une page du serveur.

Vous seriez en mesure d'accéder à la forme du codebehind:

Response.Write(form1.Name);

Sans runat = "server", nous aurions tout simplement une erreur de compilation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top