Σήμερα χρειάστηκε σε μια ASP .NET εφαρμογή που φτιάχνω, να χρησιμοποιήσω κάποιες javascript functions. Μιας και ήθελα να παίζει σε μία συγκεκριμένη content page και όχι σε όλες, δεν μπορούσα να το γράψω με τον κλασσικό τρόπο ( //mpla mpla ) στον HTML κώδικα της Master σελίδας.
Με λίγο ψάξιμο, είδα πως γίνεται προγραμματιστικά. Η ASP .NET χρησιμοποιεί το νέο Page.ClientScript property για να δηλώσει Javascript κώδικα.
Το ClientScript object έχει πολλά properties και methods, θα αναφερθώ σε 3 από αυτές.
Χρήση του Page.ClientScript.RegisterClientScriptBlock
Η Page.ClientScript.RegisterClientScriptBlock μας επιτρέπει να δηλώσουμε μία javascript συνάρτηση στην κορυφή της σελίδας.
Δηλαδή, με κώδικα στο Load της σελίδας όπως ο παρακάτω
string myScript = @”function sayHi() {alert(‘Hi’);}”;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),”MyScript”,myScript,true);
και χρήση του onClientClick=”sayHi()” σε ένα Web Control, μπορούμε να χρησιμοποιήσουμε Javascript η οποία θα φορτώνει κατά την εκκίνηση της σελίδας και πριν το <body> στοιχείο της σελίδας.
Χρήση του Page.ClientScript.RegisterStartupScript
Η διαφορά της με την προηγούμενη είναι ότι τοποθετεί το script στο τέλος της σελίδας και όχι στην αρχή. Χρησιμοποιείται για να γραφεί Javascript κώδικας ο οποίος θα έχει reference σε συγκεκριμένα HTML controls της σελίδας, οπότε και θα πρέπει να γραφεί στο HTML output αφού έχουν τοποθετηθεί τα HTML controls στη σελίδα από τον browser (χρήση της RegisterClientScriptBlock με αυτό τον τρόπο θα δημιουργούσε javascript error).
Χρησιμοποιείται ως εξής
string myScript = @”function sayHi() {alert(document.forms[0][‘TextBox1’].value);}”; /*με την προυπόθεση ότι έχουμε ένα textbox με ID TextBox1 στη σελίδα μας*/
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),”MyScript”,myScript,true);
Χρήση του Page.ClientScriptRegisterClientScriptInclude
Αυτή η συνάρτηση χρησιμοποιείται για να φορτώσουμε .js αρχεία, στα οποία έχουμε γράψει τις Javascript συναρτήσεις μας.
Χρησιμοποιείται ως εξής
string myScript = “myjs.js”;
Page.ClientScript.RegisterClientScriptInclude(“myKey”,myScript);
και δίνει το ακόλουθο HTML αποτέλεσμα