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

Discussion in 'ASP .Net' started by andrew@transitionkiteboarding.com, Aug 2, 2005.

  1. Guest

    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
    , Aug 2, 2005
    #1
    1. Advertising

  2. Guest

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


    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
    , Aug 31, 2005
    #2
    1. Advertising

  3. replicant

    Joined:
    Jul 2, 2006
    Messages:
    1
    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?
    replicant, Jul 2, 2006
    #3
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Patrick Philippot
    Replies:
    0
    Views:
    459
    Patrick Philippot
    Apr 14, 2006
  2. Xah Lee
    Replies:
    22
    Views:
    1,123
    Tim Roberts
    Mar 21, 2006
  3. Steve Holden
    Replies:
    1
    Views:
    394
    Behrang Dadsetan
    Jul 2, 2003
  4. Xah Lee
    Replies:
    23
    Views:
    1,062
    Tim Roberts
    Mar 21, 2006
  5. Xah Lee
    Replies:
    21
    Views:
    783
    Tim Roberts
    Mar 21, 2006
Loading...

Share This Page