Formulaires Web message d'erreur: “Ce n'est pas scriptlet. Sera de sortie en tant que texte brut”
Dans mes ASP .NET Web Forms j'ai le texte suivant déclarative code:
<asp:TextBox runat="server" ID="txtbox" CssClass='<%=TEXTBOX_CSS_CLASS%>' />
La constante TEXTBOX_CSS_CLASS est définie dans une classe de base que la page code-behind de la classe hérite de:
public class MyPageBase : Page
{
protected internal const string TEXTBOX_CSS_CLASS = "myClass";
}
Au moment de l'édition du compilateur cependant me prévient que "Ce n'est pas scriptlet [sic]. Sortie en tant que texte brut".
Fidèle à sa parole, la classe css est rendu comme littéralement "<%=TEXTBOX_CSS_CLASS%>".
Ce qui ne signifie ce message d'erreur et est-il une solution afin que je puisse encore utiliser une constante dans une classe de base?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser
<%= ... %>
de définir les propriétés des contrôles côté serveur.Inline expressions
<% %>
ne peut être utilisé àpage aspx ou de contrôle de l'utilisateur de haut niveau du document, mais ne peut pas être incorporés dans
serveur de contrôle de l'attribut de balise (comme
<asp:Button... Text =<% %> ..>
).Si votre zone de texte est à l'intérieur d'un contrôle lié aux données telles que GridView, ListView .. vous pouvez utiliser:
<%# %>
de la syntaxe. OU vous pouvez appeler explicitementDataBind()
sur le contrôle de code-behind ou en ligne de script serveur.//fichier code-Behind,
ASP.NET comprend quelques intégré dans l'expression des constructeurs qui vous permet d'extraire les paramètres d'application personnalisée de connexion et les informations de la chaîne de la
web.config
fichier. Exemple:Donc, si vous voulez récupérer un paramètre d'application nommée
className
de la<appSettings>
partie de laweb.config
fichier, vous pouvez utiliser l'expression suivante:Cependant, l'extrait ci-dessus n'est pas un standard pour la lecture des noms de classe de Appsettings.
Vous pouvez créer et utiliser vos propres
ExpressionBuilders
ou Utiliser le code derrière comme:Suivez ce lien sur la réalisation sur mesure de l'Expression des constructeurs.
Une fois que vous construisez votre Expression personnalisée vous pouvez afficher la valeur comme:
Le problème est que vous ne pouvez pas mélanger
runat=server
contrôles avec<%= .. %>
des blocs de code. La bonne façon serait d'utiliser le code derrière:txtbox.CssClass = TEXTBOX_CSS_CLASS;
.Cela fonctionne.
Marquer
Code-behind
Mais son beaucoup plus propre pour accéder à la
CssClass
propriété de laasp:TextBox
surPage_Load