For Programmers: Free Programming Magazines  


Home > Archive > ASP .NET > August 2005 > How to fix the whacky <script></script> bug in C# when dynamically creati









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author How to fix the whacky <script></script> bug in C# when dynamically creati
andrew@transitionkiteboarding.com

2005-08-02, 9:12 am

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

cockblocking@gmail.com

2005-08-31, 6:59 pm

Awww nice... works like a charm! Thanks for saving me time bud.


andrew@transitionkiteboarding.com wrote:
> 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


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2010 codecomments.com