2009-09-11 4 views
7

Je viens de commencer à bricoler avec le contrôle ASP: Login, et je veux modifier son apparence. Donc, je l'ai fait ce qui suit:ASP: Login <LayoutTemplate> génère toujours un <table>, comment puis-je l'arrêter?

<asp:login ID="login" runat="server" onauthenticate="Authenticate"> 
<LayoutTemplate> 
    <asp:TextBox ID="UserName" runat="server"></asp:TextBox> 
    <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox> 
</LayoutTemplate> 
</asp:login> 

Malgré le fait que je ne tag <table> nulle part dans le document, une fois que j'aperçu de la page et afficher la source, il montre très clairement y <table>. Ah! Comment dans le monde puis-je empêcher ce comportement fou, ou suis-je obligé d'utiliser des tableaux pour la mise en page au lieu de CSS?

Répondre

0

Il y a un certain nombre de choses que vous pouvez faire. Le plus simple serait d'utiliser la version Css Control Adapters toolkit du Login control, même si elle n'a pas été mise à jour depuis un moment et je ne l'ai pas utilisée récemment, alors peut-être que ce n'est plus une bonne option, je suis pas certain. Sinon, vous pourriez essayer de créer votre propre ITemplate et de le définir comme la propriété de LayoutTemplate pour le contrôle Login.

Alternativement, vous pouvez réécrire le HTML généré avec un IHttpHandler, ou même le refaire sur le client avec quelque chose comme jQuery dom replacement.

14

Vous pouvez le configurer de ne pas utiliser les tables sans extensions de tiers, assurez-vous d'utiliser le

<LayoutTemplate> 
</LayoutTemplate> 

Pour la pose de votre HTML/formulaire dans la commande, puis définissez l'attribut sur la connexion qui contrôle la table externe à false.

RenderOuterTable="false" 

Ca y est, pas de tables :)

+0

Notez que vous avez besoin de .Net 4.0+ –

Questions connexes