|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Avoiding & when adding a JavaScript event handler using Attributes.Add()Attributes.Add() method as follows: Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" TextBox2.Attributes.Add("onKeyPress", jscode) You will notice that jscode contains the JavaScript Logical And operator (&&). However, ASP.NET renders this as && in the code that is output, even though it is intended to be client-side JavaScript, not a visible onscreen character. How can I get ASP.NET to output onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" instead of onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" I am using VB.NET to write my server-side code, and am using Visual Studio ..NET 2003 with .NET 1.1. Thanks in advance for any help you can give. Abstractly speaking .innerHTML or .innerText might solve the problem (?)
I just don’t know specifically where you can and/or want to try .innerText or .innerHTML. More of a general answer sorry I wish I had more time to look at it. Show quote "Nathan Sokalski" wrote: > I add a JavaScript event handler to some of my Webcontrols using the > Attributes.Add() method as follows: > > > Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" > TextBox2.Attributes.Add("onKeyPress", jscode) > > > You will notice that jscode contains the JavaScript Logical And operator > (&&). However, ASP.NET renders this as && in the code that is > output, even though it is intended to be client-side JavaScript, not a > visible onscreen character. How can I get ASP.NET to output > > > onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > > instead of > > onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > > > I am using VB.NET to write my server-side code, and am using Visual Studio > ..NET 2003 with .NET 1.1. Thanks in advance for any help you can give. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > > > I don't think that either of those are part of the solution, because they
refer to the stuff between the opening and closing tags, like the following: <HTMLTAG>innertext or innerhtml</HTMLTAG> My goal is to add an attribute to the tag, which would be like the following: <HTMLTAG ATTRIBUTE="ATTRIBUTEVALUE"></HTMLTAG> Using the Attributes.Add() method that I showed in my initial posting adds the attribute to the right place, but it replaces the ATTRIBUTEVALUE's &'s with &'s, therefore causing the JavaScript to have incorrect syntax. Show quote "Sean" <S***@discussions.microsoft.com> wrote in message news:A50D83E1-C52E-4532-8EDB-B3530888D5DC@microsoft.com... > Abstractly speaking .innerHTML or .innerText might solve the problem (?) > > I just don't know specifically where you can and/or want to try .innerText > or .innerHTML. > > More of a general answer sorry I wish I had more time to look at it. > > > > "Nathan Sokalski" wrote: > >> I add a JavaScript event handler to some of my Webcontrols using the >> Attributes.Add() method as follows: >> >> >> Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" >> TextBox2.Attributes.Add("onKeyPress", jscode) >> >> >> You will notice that jscode contains the JavaScript Logical And operator >> (&&). However, ASP.NET renders this as && in the code that is >> output, even though it is intended to be client-side JavaScript, not a >> visible onscreen character. How can I get ASP.NET to output >> >> >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" >> >> instead of >> >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" >> >> >> I am using VB.NET to write my server-side code, and am using Visual >> Studio >> ..NET 2003 with .NET 1.1. Thanks in advance for any help you can give. >> -- >> Nathan Sokalski >> njsokal***@hotmail.com >> http://www.nathansokalski.com/ >> >> >> Ah..I see, yeah I have no idea either. Its clear that you have a clear
understanding what I was getting at and also how it doesnt apply to your situation. sorry about that. Show quote "Nathan Sokalski" wrote: > I don't think that either of those are part of the solution, because they > refer to the stuff between the opening and closing tags, like the following: > > <HTMLTAG>innertext or innerhtml</HTMLTAG> > > My goal is to add an attribute to the tag, which would be like the > following: > > <HTMLTAG ATTRIBUTE="ATTRIBUTEVALUE"></HTMLTAG> > > Using the Attributes.Add() method that I showed in my initial posting adds > the attribute to the right place, but it replaces the ATTRIBUTEVALUE's &'s > with &'s, therefore causing the JavaScript to have incorrect syntax. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > > "Sean" <S***@discussions.microsoft.com> wrote in message > news:A50D83E1-C52E-4532-8EDB-B3530888D5DC@microsoft.com... > > Abstractly speaking .innerHTML or .innerText might solve the problem (?) > > > > I just don't know specifically where you can and/or want to try .innerText > > or .innerHTML. > > > > More of a general answer sorry I wish I had more time to look at it. > > > > > > > > "Nathan Sokalski" wrote: > > > >> I add a JavaScript event handler to some of my Webcontrols using the > >> Attributes.Add() method as follows: > >> > >> > >> Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" > >> TextBox2.Attributes.Add("onKeyPress", jscode) > >> > >> > >> You will notice that jscode contains the JavaScript Logical And operator > >> (&&). However, ASP.NET renders this as && in the code that is > >> output, even though it is intended to be client-side JavaScript, not a > >> visible onscreen character. How can I get ASP.NET to output > >> > >> > >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > >> > >> instead of > >> > >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > >> > >> > >> I am using VB.NET to write my server-side code, and am using Visual > >> Studio > >> ..NET 2003 with .NET 1.1. Thanks in advance for any help you can give. > >> -- > >> Nathan Sokalski > >> njsokal***@hotmail.com > >> http://www.nathansokalski.com/ > >> > >> > >> > > > Well, I haven't found a way to do it using ONLY the Attributes.Add() method
yet (if there is one, it might be unavoidable depending on how they coded the Add() method), but I think I figured out a workaround that I think will work for all situations. Rather than doing: Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" TextBox2.Attributes.Add("onKeyPress", jscode) I will do the following: Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" Page.RegisterClientScriptBlock("TextBox2_RestrictInput", "<script type=""text/javascript"">function TextBox2_RestrictInput(){" & jscode & "}</script>") TextBox2.Attributes.Add("onKeyPress", "return TextBox2_RestrictInput();") This basically writes my JavaScript code as a function, and then I just return the value returned by the function. Apparently RegisterClientScriptBlock leaves the &'s alone, so it works. Maybe this is how ASP.NET intended all generated JavaScript to be added, although I think it would be nice to be able to do it without the RegisterClientScriptBlock method, but I guess I'll have to deal with it this way for now. Show quote "Sean" <S***@discussions.microsoft.com> wrote in message news:CAD51A64-8552-4636-963E-A04AE776BA3A@microsoft.com... > Ah..I see, yeah I have no idea either. Its clear that you have a clear > understanding what I was getting at and also how it doesnt apply to your > situation. > > sorry about that. > > "Nathan Sokalski" wrote: > >> I don't think that either of those are part of the solution, because they >> refer to the stuff between the opening and closing tags, like the >> following: >> >> <HTMLTAG>innertext or innerhtml</HTMLTAG> >> >> My goal is to add an attribute to the tag, which would be like the >> following: >> >> <HTMLTAG ATTRIBUTE="ATTRIBUTEVALUE"></HTMLTAG> >> >> Using the Attributes.Add() method that I showed in my initial posting >> adds >> the attribute to the right place, but it replaces the ATTRIBUTEVALUE's >> &'s >> with &'s, therefore causing the JavaScript to have incorrect syntax. >> -- >> Nathan Sokalski >> njsokal***@hotmail.com >> http://www.nathansokalski.com/ >> >> "Sean" <S***@discussions.microsoft.com> wrote in message >> news:A50D83E1-C52E-4532-8EDB-B3530888D5DC@microsoft.com... >> > Abstractly speaking .innerHTML or .innerText might solve the problem >> > (?) >> > >> > I just don't know specifically where you can and/or want to try >> > .innerText >> > or .innerHTML. >> > >> > More of a general answer sorry I wish I had more time to look at it. >> > >> > >> > >> > "Nathan Sokalski" wrote: >> > >> >> I add a JavaScript event handler to some of my Webcontrols using the >> >> Attributes.Add() method as follows: >> >> >> >> >> >> Dim jscode as String = "return >> >> (event.keyCode>=65&&event.keyCode<=90);" >> >> TextBox2.Attributes.Add("onKeyPress", jscode) >> >> >> >> >> >> You will notice that jscode contains the JavaScript Logical And >> >> operator >> >> (&&). However, ASP.NET renders this as && in the code that is >> >> output, even though it is intended to be client-side JavaScript, not a >> >> visible onscreen character. How can I get ASP.NET to output >> >> >> >> >> >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" >> >> >> >> instead of >> >> >> >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" >> >> >> >> >> >> I am using VB.NET to write my server-side code, and am using Visual >> >> Studio >> >> ..NET 2003 with .NET 1.1. Thanks in advance for any help you can give. >> >> -- >> >> Nathan Sokalski >> >> njsokal***@hotmail.com >> >> http://www.nathansokalski.com/ >> >> >> >> >> >> >> >> >> Server.HTMLDecode("&&")
Show quote "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:%23O%23qAYLPGHA.2088@tk2msftngp13.phx.gbl... >I add a JavaScript event handler to some of my Webcontrols using the >Attributes.Add() method as follows: > > > Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" > TextBox2.Attributes.Add("onKeyPress", jscode) > > > You will notice that jscode contains the JavaScript Logical And operator > (&&). However, ASP.NET renders this as && in the code that is > output, even though it is intended to be client-side JavaScript, not a > visible onscreen character. How can I get ASP.NET to output > > > onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > > instead of > > onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > > > I am using VB.NET to write my server-side code, and am using Visual Studio > .NET 2003 with .NET 1.1. Thanks in advance for any help you can give. > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > That would return the String && which is what I am currently putting in. The
conversion to && occurs somewhere between the call to Attributes.Add() and the time that the page is sent to the browser. The problem is that I don't know where, and if I did, I am not sure it is an area of code that I have the ability to edit, because I think it is in some area of the code that is part of ASP.NET, and I therefore do not have access to the source code. I do still want to find a way to output characters without having them go through what I think is the Server.HtmlEncode() method, but I have found a reasonably simple workaround for doing what I was trying to do that caused me to start this thread (see the message I posted at 2/28/2006 7:32 PM for the workaround I found) Show quote "Scott M." <s-mar@nospam.nospam> wrote in message news:e2VK66NPGHA.1312@TK2MSFTNGP09.phx.gbl... > Server.HTMLDecode("&&") > > > "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message > news:%23O%23qAYLPGHA.2088@tk2msftngp13.phx.gbl... >>I add a JavaScript event handler to some of my Webcontrols using the >>Attributes.Add() method as follows: >> >> >> Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" >> TextBox2.Attributes.Add("onKeyPress", jscode) >> >> >> You will notice that jscode contains the JavaScript Logical And operator >> (&&). However, ASP.NET renders this as && in the code that is >> output, even though it is intended to be client-side JavaScript, not a >> visible onscreen character. How can I get ASP.NET to output >> >> >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" >> >> instead of >> >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" >> >> >> I am using VB.NET to write my server-side code, and am using Visual >> Studio .NET 2003 with .NET 1.1. Thanks in advance for any help you can >> give. >> -- >> Nathan Sokalski >> njsokal***@hotmail.com >> http://www.nathansokalski.com/ >> > > Yup, I don't think there is any easy solution save the
workaround you used. Frankly, I think they got this one wrong in ASP.NET. It does the html encoding automatically on that method call. The only other workaround I can think of is to use methods of the HtmlTextWriter and simply write the whole element without the encoding turned on. That's not as easy to pull off as your workaround and may need a custom control. The correct way for ASP.NET to have done this would've been to at least turn off html encoding when "javascript:" is prepended to the text, or better yet, another parameter in that method for the encoding, just like one of the overloads of the AddAttribute method of the HtmlTextWriter. Show quote "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message news:OMzPOkOPGHA.2036@TK2MSFTNGP14.phx.gbl... > That would return the String && which is what I am currently putting in. The > conversion to && occurs somewhere between the call to > Attributes.Add() and the time that the page is sent to the browser. The > problem is that I don't know where, and if I did, I am not sure it is an > area of code that I have the ability to edit, because I think it is in some > area of the code that is part of ASP.NET, and I therefore do not have access > to the source code. I do still want to find a way to output characters > without having them go through what I think is the Server.HtmlEncode() > method, but I have found a reasonably simple workaround for doing what I was > trying to do that caused me to start this thread (see the message I posted > at 2/28/2006 7:32 PM for the workaround I found) > -- > Nathan Sokalski > njsokal***@hotmail.com > http://www.nathansokalski.com/ > > "Scott M." <s-mar@nospam.nospam> wrote in message > news:e2VK66NPGHA.1312@TK2MSFTNGP09.phx.gbl... > > Server.HTMLDecode("&&") > > > > > > "Nathan Sokalski" <njsokal***@hotmail.com> wrote in message > > news:%23O%23qAYLPGHA.2088@tk2msftngp13.phx.gbl... > >>I add a JavaScript event handler to some of my Webcontrols using the > >>Attributes.Add() method as follows: > >> > >> > >> Dim jscode as String = "return (event.keyCode>=65&&event.keyCode<=90);" > >> TextBox2.Attributes.Add("onKeyPress", jscode) > >> > >> > >> You will notice that jscode contains the JavaScript Logical And operator > >> (&&). However, ASP.NET renders this as && in the code that is > >> output, even though it is intended to be client-side JavaScript, not a > >> visible onscreen character. How can I get ASP.NET to output > >> > >> > >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > >> > >> instead of > >> > >> onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > >> > >> > >> I am using VB.NET to write my server-side code, and am using Visual > >> Studio .NET 2003 with .NET 1.1. Thanks in advance for any help you can > >> give. > >> -- > >> Nathan Sokalski > >> njsokal***@hotmail.com > >> http://www.nathansokalski.com/ > >> > > > > > >
Show quote
"Nathan Sokalski" <njsokal***@hotmail.com> wrote in Nathan,news:#O#qAYLPGHA.2088@tk2msftngp13.phx.gbl: > I add a JavaScript event handler to some of my Webcontrols using > the Attributes.Add() method as follows: > > > Dim jscode as String = "return > (event.keyCode>=65&&event.keyCode<=90);" > TextBox2.Attributes.Add("onKeyPress", jscode) > > > You will notice that jscode contains the JavaScript Logical And > operator (&&). However, ASP.NET renders this as && in > the code that is output, even though it is intended to be > client-side JavaScript, not a visible onscreen character. How > can I get ASP.NET to output > > > onKeyPress="return (event.keyCode>=65&&event.keyCode<=90);" > > instead of > > onKeyPress="return > (event.keyCode>=65&&event.keyCode<=90);" > > > I am using VB.NET to write my server-side code, and am using > Visual Studio .NET 2003 with .NET 1.1. Thanks in advance for any > help you can give. I think your solution of using Page.RegisterClientScriptBlock is about the only reasonable thing that will work. I used Reflector to trace thru System.Web.UI.WebControlsWebControl.Attributes to see if it was doing any kind of encoding. It turns out that System.Web.HttpUtility.HtmlAttributeEncode is called on any text added via Attributes.Add. As you've found out, HtmlAttributeEncode turns & into &. It also turns double quotes (") into ". |
|||||||||||||||||||||||