Pochi giorni fa mi è capitato di avere l'esigenza di dover chiamare una funzione JavaScript e dovergli passare un argomento...il problema era che l'argomento era dinamico e dovevo prima essere recuperarto lato server!
Alla fine, dopo varie ricerche e dopo vari "smanettamenti" (leggi "prove"), ecco il codice che ha risolto il mio problema :
Nella pagina Default.aspx :
<script type="text/javascript">
function foo() {
var argv = foo.arguments;
alert("Argomento : " + argv[0]);
}
</script>
In Default.aspx.cs (evento Page_Load):
ClientScriptManager manager = Page.ClientScript;
string s = "TEST"
manager.RegisterStartupScript(this.GetType(), "TestFoo", "foo('" + s + "');", true);
Ecco tutto!
In pratica, lato client, dichiaro la funzione foo() ed al suo interno recupero tutti i suoi argomenti tramite foo.arguments. Successivamente li utilizzo come elementi di un array ( argv[0] ).
Sul server, invece, dichiaro un oggetto ClientScriptManager (il nome è autoesplicativo!) e registro la mia bella funzione foo, dando un nome fittizio (TestFoo) e poi la richiamo passandogli gli argomenti di interesse. Per maggiori dettagli sugli altri argomenti leggete
qui.
Spero vi sia utile!
Enjoy!