2009-09-25 7 views
0

Lors du codage d'une page Asp.Net, vous ajoutez généralement un attribut runat dans le ASPX:Comment pouvez-vous savoir si form runat = serveur a été défini?

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

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

<form id="form1"> 

Ici le formulaire a l'ID "form1" mais dans mon cas, je ne le sais pas. Code derrière ce genre est ce que je cherche:

if(Page.HasForm) 
{ 
} 
+1

Quoi? Dans le code derrière? Oui, vous pouvez facilement le dire. Si vous avez accès à un objet appelé 'form1' :) Je présume, cependant, que vous voulez dire dans le HTML rendu? Pouvez-vous clarifier? –

+0

Vous ne connaissez peut-être pas l'ID du formulaire. Voir la question mise à jour. – Petras

+1

Qui écrit l'application? Les différentes personnes sont-elles responsables de la majoration par rapport au code-behind? Est-il impossible d'inspecter le balisage pour vérifier le nom du formulaire? Cette question, en l'état, n'a aucun sens pour moi. – tvanfosson

Répondre

2

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

if (Page.Form != null) 
{ 

} 

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

+0

Etes-vous sûr d'avoir une page aussi ... lol Ne pouvait pas me aider. –

+0

Autant de nervures que l'OP obtient, il est possible d'avoir une forme nulle. Considérez les classes de page qui sont entièrement construites via du code, puis héritent d'un ASPX. La classe de base peut avoir des fonctionnalités virtuelles reposant sur des classes enfants ayant un formulaire. – womp

0

var v = this.Form.TagName; // obtient le nom du formulaire créé en tant que runat.

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

0

Lorsque vous codez en C# ou Visual Basic dans la page de code, vous ne pourrez pas avoir accès à l'objet n'ont pas l'ensemble d'options runat = server.

Vous pouvez facilement accéder à tous les contrôles d'une page en utilisant la page me.controls ou quelque chose du genre (je ne connais pas le code exact mais il est proche de cela) et vérifier le type de contrôle pour obtenir le forme.

Pourquoi avez-vous besoin de savoir cela? Si une page n'a pas de formulaire runat = server, elle ne peut pas vraiment être utilisée comme page de serveur.

0

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

Response.Write(form1.Name); 

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

Questions connexes