guide - asp.net tutorial




Cambia la visibilità dell'etichetta ASP.NET con JavaScript (5)

Assicurarsi che la proprietà Visible sia impostata su true o che il controllo non esegua il rendering sulla pagina. Quindi puoi usare lo script per manipolarlo.

Ho una pagina ASP.NET con un pulsante asp: che non è visibile. Non riesco a renderlo visibile con JavaScript perché non è reso alla pagina.

Cosa posso fare per risolvere questo?


Continuando con quello che Dave Ward ha detto:

  • Non è possibile impostare la proprietà Visible su false perché il controllo non verrà reso.
  • Dovresti usare la proprietà Style per impostare la visualizzazione su none .

Page / Control design

<asp:Label runat="server" ID="Label1" Style="display: none;" />

<asp:Button runat="server" ID="Button1" />

Codice dietro

Da qualche parte nella sezione di carico:

Label label1 = (Label)FindControl("Label1");
((Label)FindControl("Button1")).OnClientClick = "ToggleVisibility('" + label1.ClientID + "')";

File Javascript

function ToggleVisibility(elementID)
{
    var element = document.getElementByID(elementID);

    if (element.style.display = 'none')
    {
        element.style.display = 'inherit';
    }
    else
    {
        element.style.display = 'none';
    }
}

Ovviamente, se non si desidera passare da una visualizzazione all'altra ma solo per mostrare il pulsante / etichetta, regolare di conseguenza il metodo javascript.

Il punto importante qui è che è necessario inviare le informazioni sul ClientID del controllo che si desidera manipolare dal lato client al file javascript impostando le variabili globali o attraverso un parametro di funzione come nel mio esempio.


Se si attende fino a quando la pagina viene caricata, e quindi si imposta la visualizzazione del pulsante su none, dovrebbe funzionare. Quindi puoi renderlo visibile in un secondo momento.


Devi fare attenzione all'XSS quando fai cose del genere:

document.getElementById('<%= Label1.ClientID %>').style.display

È probabile che nessuno sarà in grado di manomettere il ClientID di Label1 in questo caso, ma solo per essere sicuri si potrebbe desiderare di passare il suo valore attraverso uno dei metodi della libreria AntiXss :

document.getElementById('<%= AntiXss.JavaScriptEncode(Label1.ClientID) %>').style.display

Questo è il modo più semplice che ho trovato:

        BtnUpload.Style.Add("display", "none");
        FileUploader.Style.Add("display", "none");
        BtnAccept.Style.Add("display", "inherit");
        BtnClear.Style.Add("display", "inherit");

Ho il contrario nell'Else, quindi gestisce anche la visualizzazione. Questo può andare nel caricamento della pagina o in un metodo per aggiornare i controlli sulla pagina.





javascript