2010-01-04 5 views
0

Nous avons une application de gain qui montre un formulaire Web dans un navigateur Web. Afin d'obtenir des données à partir de ce formulaire Web, nous utilisons une zone de texte cachée et obtenir son texte en utilisant l'objet HtmlDocument du contrôle du navigateur Web. Je veux faire une abstraction de ce formulaire web qui a cet élément de zone de texte afin que d'autres formes puissent utiliser cette abstraction. J'ai fait un contrôle web et mis la boîte de texte dessus. Je pensais que si je mettais ce contrôle sur ma page il y aurait la boîte de texte. Quand j'ai couru mon application j'ai remarqué que la boîte de texte avait été rendue name dans son nom (WebControl $ TextBoxName) et son id (WebControl_TextBoxName) et l'application win lèvent une exception puisqu'elle n'a pas pu trouver l'élément par son identifiant (TextBoxName). Alors, voici ma question: Comment puis-je créer un formulaire Web abstrait/un contrôle Web contenant certains éléments et je peux l'utiliser pour que mes formulaires finaux contiennent ces éléments? (leurs noms et identifiants ne doivent pas être changés) Merci pour votre aideASP.Net abstraction de page

Répondre

1

dotNet 4.0 prend en charge ids statiques afin qu'ils ne reçoivent pas mutilée, lu sur Client Id Mode

Sinon, vous pouvez remplacer le rendu de votre commande pour produire un champ HTML standard forme cachée avec ce ID que vous voulez, et puis ajoutez également une propriété personnalisée qui renverra la zone de texte qui masquera le fait qu'il ne s'agit pas d'un contrôle serveur asp.net.

1

Bien que je n'ai jamais utilisé le contrôle du navigateur dans WinForms, je pense que ce que vous voulez utiliser est une page principale. En supposant que ce que vous affichez dans le contrôle du navigateur est une page ASPX, créez une page principale avec la zone de texte cachée à partir de laquelle vous voulez récupérer vos données et dites à toutes les pages sur lesquelles vous souhaitez avoir ce contrôle commun pour utiliser votre La page principale. Lorsque la page s'affiche, l'ID de contrôle sera alors "ctl00_TextBoxName". Il n'y a aucun moyen de contourner la concaténation d'ID, car les ID uniques sont nécessaires et c'est le seul moyen de garantir l'unicité avec toutes les capacités de contrôle imbriquées d'ASP.NET. Cependant, cela vous garantira toujours le même nom sur chaque nouveau formulaire qui hérite de la page principale. J'espère que cela pourra aider!

En résumé (car qui lit les paragraphes?):

  • Créer maître page
  • Placez votre contrôle commun dans le maître page
  • Demandez à votre formulaire héritera le Maître page

Vous pouvez lire le fonctionnement des pages maîtres au MSDN's Documentation.