web-dev-qa-db-fra.com

Contrôle ASP.NET équivalent à une balise HTML

Je cherche une feuille de triche qui me permettra de montrer à un concepteur HTML les contrôles asp.net équivalents pour les balises HTML standard. Par exemple, le <asp: Panel> sera rendu en HTML <div> et un <asp: Label> sera rendu en HTML <span>. J'ai googlé cela en vain. Quelqu'un peut-il publier un lien vers une bonne feuille de triche afin que les concepteurs de ce projet puissent mieux comprendre le balisage sur les pages aspx.

Pour être clair, je voudrais un lien vers une liste des principaux contrôles ASP.NET, avec des descriptions sur la façon dont ils se rapportent au HTML standard. Ce serait formidable si c'était au format PDF ou sur une page Web facile à lire et à imprimer. La raison, dans mon cas, serait que nous avons un PHP développeur qui est très familier avec le HTML venant travailler sur notre projet, et je pense qu'il serait utile d'avoir une meilleure compréhension des contrôles serveur ASP.NET standard si je pouvais lui remettre une telle "feuille de triche".

Je me réfère principalement au framework .NET 2.0, mais nous travaillons également avec 3.0/3.5.

59
stephenbayer

Ce n'est pas une question simple, car cela dépend de la version de .NEt dont vous parlez et des états des contrôles parfois. Par exemple, le PANEL, en 1 et 1.1, est rendu en TABLE tandis que dans les versions ultérieures, c'est un DIV.

Mais dans l'ensemble (pour 2/3), voici:

  • Panneau - Div
  • Panel - GroupingText = "###" est Fieldset, Legend
  • Étiquette - Span
  • Bouton - Entrée, bouton Type
  • Bouton Lien - Href avec JS Postback Script
  • Hyperlien - HREF standard
  • Bouton d'image - entrée, type d'image
  • Zone de texte - La valeur par défaut est Input, Type Text
  • Zone de texte - Mode = le mot de passe est entré, saisissez le mot de passe
  • Textbox - Mode = Multiline est Textarea
  • DropDownList - Sélectionnez
  • Listbox - Sélectionnez
  • RadioButton - Entrée, radio avec GroupName
  • Case à cocher - Entrée, Case à cocher
  • Répéteur/Listview - Complexe.
  • Gridview - Table
  • Table - Table
  • Fichier - Entrée, Type = Fichier

    Voilà l'essentiel. Les contrôles les plus ésotériques tels que le contrôle LOGIN sont une table avec un tas de cotes et se termine à l'intérieur.

101
Stephen Wrighton

La liste de Stephen est assez complète. J'y ajouterais cependant les notes suivantes:

Cela dépend principalement des BrowserCaps connus .

Un panneau 1.x s'affichera sous forme de div dans IE6 + - cependant dans Firefox (ou dans d'autres navigateurs "DownStream" - considéré comme DownStream car il n'y avait aucun détail à ce sujet dans Machine.Config par défaut), il s'affichera comme un tableau à une seule cellule - cela pourrait être résolu en fournissant des BrowserCaps mis à jour pour Firefox/Opera/Safari/etc, soit dans Machine.Config ou Web.Configs.

En outre, les adaptateurs de contrôle peuvent modifier la sortie - par exemple, les adaptateurs de contrôle CSS produiront des divs de style pour la plupart des contrôles tabulaires (connexion, enregistrement, répéteurs, etc).

Notez qu'il a été annoncé à TechEd/PDC qu'ASP.NET 4.0 aura les adaptateurs de contrôle CSS intégrés par défaut.

11
Zhaph - Ben Duguid

Cela ne répond pas directement à votre question, mais dans de nombreux cas, vous pouvez ajouter runat = "server" à une balise HTML régulière pour en informer ASP.Net. Cela pourrait faciliter les choses pour le concepteur, si vous souhaitez pouvoir modifier dynamiquement la page, tout en permettant au concepteur de travailler dessus.

<div id="myDiv" runat="server"></div>
<span id="mySpan" runat="server"></span>

Éditer:

Une chose que j'ai oublié de mentionner (comme l'a souligné steve_c) est que l'ajout de runat = "server" changera l'ID de la balise, ce qui peut être un peu pénible. Vous n'avez pas de chance si vous utilisez l'ID dans votre CSS, mais dans votre JavaScript, vous pouvez ajouter quelque chose comme <% = myDiv.ClientID%> pour obtenir l'ID généré par .Net.

4
Matt Ephraim
protected void CreateHeaders(List<Group_Info> group_Info)
{
    foreach (Group_Info gi in group_Info)
    {
        HtmlGenericControl groupContainer = new HtmlGenericControl("DIV");
        String lastLableID = "disp" + gi.GroupName.ToString().Replace(" ", "");
        groupContainer.ID = lastLableID;
        groupContainer.Attributes.Add("class", "content-groups");

        HtmlGenericControl groupTitle = new HtmlGenericControl("DIV");
        groupTitle.ID = lastLableID + "Sub1";
        if (gi.GroupName.Trim().Length == 0)
            groupTitle.Attributes.Add("class", "titlebar-hidden");
        else
        {
            groupTitle.Attributes.Add("class", "titlebar");
            groupTitle.InnerText = gi.GroupName.ToString().Trim();
        }

        groupContainer.Controls.Add(groupTitle);

        CreateFields(gi, ref groupContainer);

        this.pageContainer.Controls.Add(groupContainer);
    }
}
0
Switch

htmlgenericcontrol peut être utile si vous devez rendre une balise spécifique

0
Element