2010-04-14 4 views
0

Je me sens comme si c'est une question simple, mais ne trouve pas de réponse nulle part. Nous avons une interface que nous essayons de déplacer vers un contrôle ASP.NET. Il ressemble actuellement:Contrôles de formatage dans ASP.NET

<link rel=""stylesheet"" type=""text/css"" href=""/Layout/CaptchaLayout.css"" /> 
<script type=""text/javascript"" src=""../../Scripts/vcaptcha_control.js""></script> 

<div id="captcha_background"> 
      <div id="captcha_loading_area"> 
       <img id="captcha" src="#" alt="" /> 
      </div> 

      <div id="vcaptcha_entry_container"> 
       <input id="captcha_answer" type="text"/> 
       <input id="captcha_challenge" type="hidden"/> 
       <input id="captcha_publickey" type="hidden"/> 
       <input id="captcha_host" type="hidden"/> 
      </div> 

      <div id="captcha_logo_container"></div> 
     </div> 

Cependant tous les exemples que je vois des contrôles ASP.NET qui permettent la fonctionnalité basical - à savoir

public class MyControl : Panel 
{ 
public MyControl() 
{ 
} 

protected override void OnInit(EventArgs e) 
{ 
ScriptManager.RegisterScript(... Google script, CSS, etc. ...); 


TextBox txt = new TextBox(); 
txt.ID = "text1"; 
this.Controls.Add(txt); 

CustomValidator vld = new CustomValidator(); 
vld.ControlToValidate = "text1"; 
vld.ID = "validator1"; 
this.Controls.Add(vld); 
} 
} 

Ne pas permettre la mise en page détaillée que nous avons besoin. Des suggestions sur la façon dont je peux combiner la mise en page et la fonctionnalité et avoir toujours un seul contrôle ASP, nous pouvons tomber dans les pages? Le but ultime est de laisser tomber les utilisateurs du contrôle:

<captcha:CaptchaControl ID="CaptchaControl1" 
runat="server" 
Server="http://localhost:51947/" 
/> 

et de voir le contrôle de fonctionnement.

Désolé pour la nature de base de celui-ci, toute aide est grandement appréciée.

+0

Et pourquoi cela ne permet-il pas la "mise en page détaillée" dont vous avez besoin? –

+0

pourriez-vous être plus précis sur "Ne pas tenir compte de la mise en page détaillée dont nous avons besoin"? Vous pouvez toujours ajouter HtmlGenericControl avec du contenu HTML brut à la collection Controls si c'est ce que vous recherchez? PS; en regardant le code d'exemple. Je placerais la création de contrôle enfant dans la méthode "CreateChildControls" de votre contrôle personnalisé. –

Répondre

0

Bien que vous souhaitiez examiner les commandes utilisateur, la page suivante présente un exemple d'utilisation d'un contrôle Web. http://msdn.microsoft.com/en-us/library/3257x3ea.aspx La méthode Render() génère la sortie du code HTML réel pour le contrôle.

+0

Merci, j'ai été en mesure de construire une solution hors de cet article. Lentement s'y prendre. – Brian

0

Il y a plusieurs façons de le faire. Vous pouvez créer un contrôle personnalisé ou un contrôle utilisateur. Je pense que vous trouverez plus facile de faire un contrôle utilisateur. Il vous permet de disposer des parties de votre contrôle comme vous le feriez sur une page normale. Voici quelques exemples de documentation: http://msdn.microsoft.com/en-us/library/26db8ysc(VS.85).aspx

Par contraste, un contrôle personnalisé effectue généralement tout le rendu dans le code (comme vous le montrez votre exemple). Il est plus difficile de faire votre premier contrôle de cette manière.