2012-01-04 6 views
1

J'ai créé des contrôles .NET personnalisés, et j'aimerais savoir si c'est possible, comment ajouter un attribut personnalisé dans le fichier web.config lorsque vous ajoutez le référence au contrôle.ajouter un attribut web.config personnalisé à un élément préexistant

Actuellement, il est:

<controls> 
      <add tagPrefix="FOO" src="~/Controls/FooControl.ascx" tagName="Bar" /> 
    </controls> 

Mais ce que je voudrais faire, est le suivant

<controls> 
      <add tagPrefix="FOO" src="~/Controls/FooControl.ascx" tagName="Bar" defaultVal="12" /> 
    </controls> 

En bref, je veux ajouter un attribut personnalisé à un .NET un ConfigurationElement par défaut (controls.add dans ce cas) élément

Je sais que je pourrais le transmettre en tant qu'attribut lorsque je crée le contrôle ou que j'ajoute une clé dans les appsettings, mais je voudrais rester loin de ça si possible.

Merci pour votre aide,

+0

vous êtes désireux d'ajouter que dans le fichier de configuration sur la mouche par exemple ..? si c'est le cas, j'ai fait quelque chose exactement comme ça en utilisant XPATH pour mettre à jour le fichier .config .. corrigez-moi si je ne comprends pas votre question .. merci – MethodMan

+0

éditer le fichier de configuration va redémarrer l'application web. –

+1

éditer le web/app.config à l'exécution est une mauvaise pratique totale. –

Répondre

0

Non, ce n'est pas possible. La classe TagPrefixInfo, qui correspond à l'élément tag, est scellée et ne fournit aucune propriété générique à cette fin.

Si vous essayez d'ajouter des propriétés supplémentaires, votre application va se casser car asp.net refusera de le traiter.

En outre, même si cela était possible, il serait très difficile de voir comment la définition de l'étiquette correspondrait au contrôle réel qui est placé sur la page. Je pense que cela ferait asp.net tout tordu dans les noeuds essayant de résoudre cela. Ce serait similaire à essayer d'ajouter un attribut à une instruction using. En fonction de votre question, vous savez quelle est la plupart des autres options qui s'offrent à vous.

A propos de la seule que vous n'avez pas mentionné a été l'ajout d'une propriété au contrôle réel qui est placé sur la page en utilisant la balise, à savoir

<FOO:Bar ID="test" runat="server" defaultVal="12"></FOO:Bar> 
+0

Je le faisais déjà. Je voulais juste une valeur par défaut attribut defaultVal saisi à partir de config. –

+1

Désolé, vous pouvez l'ajouter ailleurs dans la configuration, mais pas dans la ligne de tag.Microsoft l'a verrouillé assez étroitement. Pour les fous rires, j'ai aussi essayé d'ajouter un paramètre querystring au chemin usercontrol, mais ensuite asp.net se plaint de ne pas trouver le contrôle de l'utilisateur. –

+0

j'ai essayé cela à: P. Merci de toute façon, je suppose que malade juste utiliser une clé –

1

Vous devez faire cela sur le contrôle lui-même, et non le fichier web.configuration. Je crois qu'il ya une interface utilisateur attribut que vous ajoutez, quelque chose comme

[DefaultValue(1)] 
public int Number {get;set;} 

Je pourrais être loin, mais il est quelque chose comme ça. L'autre option est de définir la valeur dans le cteur

class MyControl : Control 
{ 
    public MyControl() 
    { 
     Number = 10; 
    } 
} 

de l'objet les deux options suivantes sont de créer un gestionnaire de section pour analyser la valeur d'un nœud de configuration personnalisée ou utiliser app.config pour définir la valeur par défaut.

+0

Je le sais, mais je veux saisir cette valeur par défaut dans la section du contrôle web.config. Donc quelque chose comme [DefaultValue (ConfigurationControl.DefaultNumberValue)] public int Nombre {get; set;} –

Questions connexes