BUG SUI MODULI?

sabato 28 febbraio 2009 - 16.46

MagoDaniel1981 Profilo | Newbie

Buongiorno a tutti, probabilmente sbaglio qualcosa io ma son due giorni che mi ci scorno senza risultati, e quindi ora chiedo...

Ho il seguente codice dento un form ASPX:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e poi ho un modulo, in un altro progetto (referenziato all'interno della stessa soluzione) con la seguente proprietà:

Public ReadOnly Property ShowControlBasedOnRoles(ByVal action As String) As Boolean Get Dim actualRole() As String = Roles.GetRolesForUser() Dim ApprovedRoles As String = ConfigurationManager.AppSettings(action) Dim arrRoles() As String = ApprovedRoles.Split("#") For Each s As String In arrRoles If s.Equals(actualRole(0)) Then actualRole = Nothing ApprovedRoles = Nothing Return True End If Next actualRole = Nothing ApprovedRoles = Nothing Return False End Get End Property

Vorrei semplicemente che la proprietà Visible dell'oggetto ImgButton fosse settata a runtime da questa proprietà che, in funzione dell'azione richiesta, ricerchi nel webconfing l'insieme dei ruoli a cui la stessa è concessa. Ebbene: udite udite: nessun errore, nessun problema, solo che la chiamata alla proprietà (ho provato anche a dichiararla come funzione) non viene effettuata! Il bottone resta sempre visibile e tanti saluti. La funzione si trova in un modulo chiamato PolicyRolesManager.vb inserito nel progetto BLL della soluzione a cui il sito web che sto realizzando appartiene. Come mai accade questo?
Vi dirò di più, più su nella pagina c'è un controllo custom che deriva da GridView, stessa chiamata, cambia solo il valore passato come action ("DeletePromozione"), in questo caso tutto funziona regolarmente, la chiamata viene effettuata e il bottone delete appare e scompare in funzione dell'utente loggato. Questo il TemplateField della collezione Columns del mio custom GridView:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Qualche idea?

Grazie a tutti.

Jeremy Profilo | Guru

Ciao MagoDaniel.
L'unica differenza che vedo è il nome della Proprietà in AppSetting con il quale poi fai il confronto dopo averne splittato il valore in funzione di #.....Sei sicuro che la Proprietà AddPromozione e DeletePromozione siano valorizzate a dovere?
Un'altra cosa che potrei consigliarti è di usare un metodo comparativo(tra valori string) differente.....semplicemente un = (magari usando anche l'estensione ToUpper).

Prova e poi .... facci sapere....
Ciao

MagoDaniel1981 Profilo | Newbie

Ciao Jeremy!
Non ho esattamente capito a cosa ti riferisci, ma il problema è a monte: la mia chiamata a questa proprietà, posta in un modulo, non viene proprio fatta. Nel senso: se io metto un breakpoint sul Get della mia ShowControBasedOnRoles(action as string) as boolean, il debug proprio non passa da li, non chiama la proprietà e mi mette sempre a true la proprietà visible del mio imgButton.
Mentre la cosa strana è che invece il bottone posto nel template field del gridview, quello si che chiama la funzione. Per intenderci: io ho un gridview con 2 righe (alle quali corrispondono due imgbutton con il cestino nella colonna elimina. Poi, più sotto nella stessa pagina, ho un imgButton che, cliccato, rende visibile un detailsview che consente l'inserimento di una nuova promozione. Ecco che, se io debuggo la pagina, la proprietà viene interrogata due volte, per mostrare o nascondere i due pulsanti elimina posti nel gridview; poi però la terza chiamata che dovrebbe essere fatta per impostare la proprietà dell'imagebutton, posto dopo il gridview, non viene proprio effettuata! Ma perchè dico io?!

Ok per la comparazione di stringhe, dici che è meglio un semplice = che il metodo Equals? Sai anche spiegarmi il perchè? mica per altro, se so il motivo di una cosa tendo a ricordarmela più facilmente! GRazie comunque per l'interessamento e buon lavoro!

Daniel
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5