Gustav Brock
gustav at cactus.dk
Wed Nov 21 10:39:29 CST 2012
Hi all
I have an ASP.NET winform project (.aspx) with a code-behind .cs file and an
included .js file for client side code.
The client side code is nothing special, only that it minimizes the
round-trip to the server which I found slowed down the page when run on a
smart-phone with GSM data link (not WiFi).
How can I pass data from the .cs code to the .js code?
Right now I write some client side script at Page_Load:
<c#>
private void RegisterScripts()
{
// Output the reference to the .js file.
Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "jScript",
"/ClientScript.js");
// Output the variables.
StringBuilder sb = new StringBuilder();
sb.Append("<script type=\"text/javascript\"
language=\"javascript\">\n");
sb.AppendFormat("var optionsOne = new
Array(\"{0}\",\"{1}\",\"{2}\");\n", optionsAll[0,0], optionsAll[0,1],
optionsAll[0,2]);
sb.AppendFormat("var optionsTwo = new
Array(\"{0}\",\"{1}\",\"{2}\");\n", optionsAll[1,0], optionsAll[1,1],
optionsAll[1,2]);
sb.AppendFormat("var optionsThree = new
Array(\"{0}\",\"{1}\",\"{2}\");\n", optionsAll[2,0], optionsAll[2,1],
optionsAll[2,2]);
sb.AppendFormat("var answerComments = new Array(\"{0}\",\"{1}\");\n",
answerComments[0], answerComments[1]);
sb.AppendFormat("var alertEnterEmail = \"{0}\";\n", alertEnterEmail);
sb.Append("</script>\n");
Page.ClientScript.RegisterClientScriptBlock(GetType(), "fillOptions",
sb.ToString());
}
</c#>
This works fine and dandy as the data (the arrays and variables) are static
during a session (but not between sessions) as these are retrieved once from
the database also at Page_Load.
But the scriptblock is visible at client side if the user selects "View
source" in the browser and I would prefer it not to be.
Also, the method of writing code lines from code seems sort of primitive to
me.
Would there be a better/easier/smarter way?
/gustav