19 messaggi dal 17 febbraio 2013
Ciao a tutti,
ho una applicazione nella quale ho configurato, nel web.config, alcune variabili da utilizzare nei controlli dei form asp.net

<appSettings>
<add key="FORM_OBBL" value="&lt;label class="text-danger"&gt;&lt;span class="fa fa-exclamation-circle"&gt;&lt;/span&gt;&lt;/label&gt;"/>


questa variabile per esempio la utilizzo così:
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server"  ControlToValidate="UserName" ErrorMessage="<%$appSettings:FORM_OBBL %>



Ho deciso di rendere queste variabili modificabili salvandone i valori in un database, e valorizzando poi delle variabili Application nel Application_Start.
Per esempio adesso ho nel Global.asax, in Applicatio_Start:
Application["FORM_OBBL"]=@"&lt;label class="text-danger"&gt;&lt;span class="fa fa-exclamation-circle"&gt;&lt;/span&gt;&lt;/label&gt;";


ma se la utilizzo così non viene stampata:
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server" 
ControlToValidate="UserName" ErrorMessage='<%# Application["FORM_OBBL"] %>' 



Ho provato a convertire in Literal ma ho lo stesso risultato: il controllo funziona ma NON stampa il messaggio di errore.

Consigli su come risolvere il problema SENZA passare dal Code Behind?

Grazie :)
Modificato da Yield79 il 12 novembre 2015 16.17 -
19 messaggi dal 17 febbraio 2013
Ho fatto altre prove utilizzando anche HtmlEncode o HtmlString ma niente...

ho notato che nell'HTML finale il valore non viene proprio "visualizzato", in fatto usando
ErrorMessage="<%$appSettings:FORM_OBBL %>"

nell' HTML ho
<span id="Login1_UserNameRequired" title="La password è obbligatoria." style="visibility:hidden;"><label class="text-danger"><span class="fa fa-exclamation-circle"></span></label></span>



mentre utilizzando
ErrorMessage='<%# Application["FORM_OBBL"]%>'

nell'HTML ho
<span id="Login1_UserNameRequired" title="Il nome utente è obbligatorio." style="visibility:hidden;"></span>


Nel Page_Load ho provato a scrivere
Response.Write(Application["FORM_OBBL"]);

e nell'HTML ho
<label class="text-danger"><span class="fa fa-exclamation-circle"></span></label>



help :(
3.939 messaggi dal 28 gennaio 2003
Io non utilizzerei le variabili application, bensì variabili statiche (shared in basic) di una classe. Perché? le prestazioni sono migliori.
19 messaggi dal 17 febbraio 2013
pietro09 ha scritto:
Io non utilizzerei le variabili application, bensì variabili statiche (shared in basic) di una classe. Perché? le prestazioni sono migliori.

Ok, ma al di là di quello, è che non capisco il funzionamento...
Per gli errormessage ho risolto mettendo la variabile tra i due tag del Requiredfieldvalidator

Ora però lo stesso problema ce l'ho nelle Regularexpression, per esempio nei campi email....
La mia idea è utilizzare una variabile per modificare queste formule senza intervenire fisicamente nei file.
3.939 messaggi dal 28 gennaio 2003
Non so. Io sono nella tua stessa situazione. Nel senso che, ho dovuto modificare i messaggi di errore da statici a dinamici, leggendoli da database. Per esempio:

<asp:RequiredFieldValidator ID="PasswordRequired" runat="server" ControlToValidate="Password" ErrorMessage="<%#gl.frase(20) %>" ToolTip="<%#gl.frase(20) %>" ValidationGroup="Login1" CssClass="text_error help">*</asp:RequiredFieldValidator>


Ho notato che, a volte basta mettere <% = gl.frase(20)

Mentre, se questo dà errore, bisogna mettere <% # gl.frase(20)

In questo caso, nell'evento load, non bisogna dimenticarsi di mettere:
Me.DataBind()

oppure, in questo caso:
Me.PasswordRequired.DataBind();

Perciò, dato che funziona bene, forse nel tuo caso l'errore può essere dovuto ad una semplice svista... di più non so.
Ciao.
Iniziamo a chiarire:
Application_Start: Called when the first resource (such as a page) in an ASP.NET application is requested. The Application_Start method is called only one time during the life cycle of an application. You can use this method to perform startup tasks such as loading data into the cache and initializing static values.

Tu parli di non passare dal code behind ma poi modifichi il global.asax? Hai provato a mettere un breakpoint in Application_Start? Il recupero dei valori da database funziona correttamente? Cosa succede per le richieste successive alla prima?
Se fino qui è tutto ok.
Tu utilizzi <%# che si usa nei controlli con databind. Il tuo validator è in un Repeater?
Altrimenti devi usare <%= ma non in controlli runat="server".

Ormai programmano tutti... ma la professionalità appartiene a pochi
19 messaggi dal 17 febbraio 2013
manuel0081 ha scritto:

Altrimenti devi usare <%= ma non in controlli runat="server".


E' tutto in quest'ultima frase... semplicemente quello che stavo provando a fare.... non si può fare.... senza passare da codebehind.

Mi chiedevo perchè funziona utilizzando invece variabili di applicazione configurate nel web.config e il tag <%$

In pratica cercavo di rendere "parametrico e configurabile" delle variabili che fino ad oggi impostavo nel web.config.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.