How to fix the whacky <script></script> bug in C# when dynamically creating javascript.

A

andrew

So I spent ages trying to work out what the problem was with my code
when I did this and found a post which led me to the very simple
solution.

I use WebMatrix so I'm not sure if this is a major problem in VS or not
but it is bloody frustrating.

Stick the following bit of code into a page and save it.

<%@ Page Language="C#" %>
<script runat="server">
private void Page_Load( object sender, EventArgs e ) {
string scripttoadd = "<script></script>";
sometext.Text = scripttoadd;
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
<asp:Label id="sometext" runat="server"/>
</form>
</body>
</html>

So this is a pretty basic page and fairly often you'll want to add a
dynamically created script to the page to do something on the client
side...

If you try and execute this however you will get the error:

CS1010: Newline in constant

This stumped me for ages as I couldn't find the newline anywhere.
Removing the second > seemed to fix the problem but led to errors in
the HTML later on - especially where there were other scripts in the
page.

A chance post where someone mentioned the interpreter getting mangled
on something else and the colours all disappearing on the rest of my
code in WebMatrix made me realise that this is exactly what is going on
as you can't have nested <script> tags according to the the HTML spec -
and the IDEs and Interpreter don't look at the surrounding "" to see
whether you are really building a tag or not.

As such the solution if anyone else gets into this particular pickle is
to change this line:

string scripttoadd = "<script></script>";

to this line:

string scripttoadd = "<script></script" + ">";

and it will all work fine - no tripping up - I promise.

AndrewF
 
Joined
Jul 2, 2006
Messages
1
Reaction score
0
that method of faking it to accept </script> doesn't seem to work for me, i've tried without using String.Format, and with using String.Format:

lblDisplayScript.Text = String.Format("<script type='text/javascript' src='http://voap.weather.com/weather/oap/{0}?template=COLDV&par=null&unit=0&key=ca2d7a62e1c6222d0e79894ab2bf0f4d'></script" + ">", zipCode);

Any suggestions?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top