Domanda

Ho un po 'JavaScript in una pagina ASP.NET che assomiglia a questo:

var list = $get('<%=Topics.ClientID %>');

Ho molte funzioni scritte ora in cui viene utilizzata questa sintassi, e vorrei centralizzare la mia JavaScript e spostare questo in un file JavaScript esterno. Questo rompe però, dal momento che 'Argomenti' non può essere trovato.

Qual è la migliore strategia per ottenere questo lavoro? Suppongo che dovrei passare le informazioni di controllo / controllo come un parametro alla funzione, ma non riesco a ottenere la sintassi per funzionare. Qualche suggerimento?

È stato utile?

Soluzione

E 'un problema comune per lo sviluppo ASP.NET JS. Quanto a me, sto usando lo stesso metodo ogni volta e tutto sembra a posto.

Sono abituato a OOP in Javascript, quindi la maggior parte i miei file esterni JS assomigliano:

function CouponManager()
{
}

E nel codice aspx faccio:

<script language="javascript">
    var couponManager = new CouponManager();
</script>

Se ho bisogno di passare alcuni parametri a cambiare la dichiarazione di classe per:

function CouponManager(params)
{
    // .. stuff here

    this.initialize = function(initParams)
    {
       // .. accessing initParams variable for server control IDs
    };

    this.initialize(params);
}

E dal codice aspx faccio la seguente:

<script language="javascript">
    var couponManager = new CouponManager
    ({
        txtCouponNameId = '<%= txtCouponName.ClientID %>',
        txtCouponDescriptionId = '<%= txtCouponDescription.ClientID %>'
    });
</script>

Questo approccio mi permette di separare JS dalla pagina aspx e hanno tutte le dipendenze di controllo del server in un singolo tag.

Altri suggerimenti

Si dovrebbe creare un metodo javascript dall'interno della usercontol che restituisce l'elemento lato client. Poi, nel tuo altra pagina / di controllo, basta accedere a tale metodo

Nel controllo utente

 <script language="javascript">
     function GetTopics() {
          return = $get('<%=Topics.ClientID %>');
     } 
 </script>

In altra pagina / controllo

 <script language="javascript">
     var list = GetTopics();
 </script>

Modifica - Il problema che si trovano ad affrontare è che è necessario Topics.ClientID dove non esiste. Quindi l'unico modo per colmare questa lacuna è di metterla in un luogo comune. Se davvero non si vuole fare questo, si può provare e selezionare il proprio elemento da parte di alcuni altri criteri. Se si utilizza jQuery, è possibile contrassegnare un elemento con una classe di argomenti poi trovare con $ ( "Argomenti").

se sai che hai solo un controllo server chiamato "Argomenti" per pagina, e si utilizza convenzioni di denominazione è possibile ereditare da qualunque Argomenti di controllo è (forse è un HiddenField? Non si specifica) e ignorare la sua ClientId getter per restituire il suo ID del server in questo modo:

http: //andreascode.wordpress. COM / 2009/04/27 / minuscole-gocce-di-ASPNET-succo /

, allora si può sapere nei file javascript che ci sarà un campo nascosto nella pagina con l'ID impostato su "Argomenti" e l'uso che, direttamente.

a seconda del tuo dominio / situazione questo potrebbe o risparmiare un sacco di tempo o si vite nel corso tempo grande.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top