Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Web Development
  3. ASP.NET
  4. Pass double quote from VB to HTML

Pass double quote from VB to HTML

Scheduled Pinned Locked Moved ASP.NET
htmlsysadminhelp
14 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    jamesbronw
    wrote on last edited by
    #1

    Hi i am trying to do a response.write from my vb code. I need this to create a new asp:imagebutton. This is the code i have Response.Write("    ") now when i pass it into the html i need do have double quotes around the id, server, width, height, and backcolor. The only reason i think this is because the controls are not showing up on my page. If anyone can help I would much appreciate it. Thanks Tommy

    J 1 Reply Last reply
    0
    • J jamesbronw

      Hi i am trying to do a response.write from my vb code. I need this to create a new asp:imagebutton. This is the code i have Response.Write("    ") now when i pass it into the html i need do have double quotes around the id, server, width, height, and backcolor. The only reason i think this is because the controls are not showing up on my page. If anyone can help I would much appreciate it. Thanks Tommy

      J Offline
      J Offline
      Jesse Squire
      wrote on last edited by
      #2

      To render a quote in HTML, you'll have to use the HTML escape character: " [Note that the character needs to be followed by a semi-colon (;) that I did not use to avoid encoding.] I'm not sure that I have this correct, so please excuse me if I'm interpreting you incorrectly. The way that I read your post, you're trying to emit <asp:imagebutton id = "myButton" ... /> from your code-behind. If so, that is why your controls aren't showing up. The asp:imagebutton tags are not valid HTML and won't be interpreted by the browser. They are server-side short hand that the ASP.NET handler uses to generate a class. If you want to add an image button at runtime, you'll need to create it programatically and add it to the page. For example:

      Protected Overrides Sub OnInit(ByVal ea As EventArgs)

      ' Create the image button

      Dim myImageButton As New ImageButton

      ' Set properties

      myImageButton.ID = "myImageButton"

      myImageButton.Width = New Unit("100%")

      ' Add the image button to the page

      Page.Controls.Add(myImageButton)

      End Sub

      Hope that helps. :) --Jesse

      J 2 Replies Last reply
      0
      • J Jesse Squire

        To render a quote in HTML, you'll have to use the HTML escape character: " [Note that the character needs to be followed by a semi-colon (;) that I did not use to avoid encoding.] I'm not sure that I have this correct, so please excuse me if I'm interpreting you incorrectly. The way that I read your post, you're trying to emit <asp:imagebutton id = "myButton" ... /> from your code-behind. If so, that is why your controls aren't showing up. The asp:imagebutton tags are not valid HTML and won't be interpreted by the browser. They are server-side short hand that the ASP.NET handler uses to generate a class. If you want to add an image button at runtime, you'll need to create it programatically and add it to the page. For example:

        Protected Overrides Sub OnInit(ByVal ea As EventArgs)

        ' Create the image button

        Dim myImageButton As New ImageButton

        ' Set properties

        myImageButton.ID = "myImageButton"

        myImageButton.Width = New Unit("100%")

        ' Add the image button to the page

        Page.Controls.Add(myImageButton)

        End Sub

        Hope that helps. :) --Jesse

        J Offline
        J Offline
        jamesbronw
        wrote on last edited by
        #3

        Thank you

        1 Reply Last reply
        0
        • J Jesse Squire

          To render a quote in HTML, you'll have to use the HTML escape character: " [Note that the character needs to be followed by a semi-colon (;) that I did not use to avoid encoding.] I'm not sure that I have this correct, so please excuse me if I'm interpreting you incorrectly. The way that I read your post, you're trying to emit <asp:imagebutton id = "myButton" ... /> from your code-behind. If so, that is why your controls aren't showing up. The asp:imagebutton tags are not valid HTML and won't be interpreted by the browser. They are server-side short hand that the ASP.NET handler uses to generate a class. If you want to add an image button at runtime, you'll need to create it programatically and add it to the page. For example:

          Protected Overrides Sub OnInit(ByVal ea As EventArgs)

          ' Create the image button

          Dim myImageButton As New ImageButton

          ' Set properties

          myImageButton.ID = "myImageButton"

          myImageButton.Width = New Unit("100%")

          ' Add the image button to the page

          Page.Controls.Add(myImageButton)

          End Sub

          Hope that helps. :) --Jesse

          J Offline
          J Offline
          jamesbronw
          wrote on last edited by
          #4

          can i do that inside a do while loop like this... Do While lbl <= 7 Dim newlbl As New Label newlbl.ID = "newlbl" & lnum newlbl.Text = lnum newlbl.BackColor = System.Drawing.Color.Blue newlbl.BorderStyle = BorderStyle.Inset newlbl.BorderColor = System.Drawing.Color.Black newlbl.BorderWidth.Pixel(1) Page.Controls.Add(newlbl)

          J 1 Reply Last reply
          0
          • J jamesbronw

            can i do that inside a do while loop like this... Do While lbl <= 7 Dim newlbl As New Label newlbl.ID = "newlbl" & lnum newlbl.Text = lnum newlbl.BackColor = System.Drawing.Color.Blue newlbl.BorderStyle = BorderStyle.Inset newlbl.BorderColor = System.Drawing.Color.Black newlbl.BorderWidth.Pixel(1) Page.Controls.Add(newlbl)

            J Offline
            J Offline
            Jesse Squire
            wrote on last edited by
            #5

            Absolutely. Just keep in mind that dynamic controls need to be recreated each trip back to the server. ASP.NET will not recreate them on postback. --Jesse

            J 1 Reply Last reply
            0
            • J Jesse Squire

              Absolutely. Just keep in mind that dynamic controls need to be recreated each trip back to the server. ASP.NET will not recreate them on postback. --Jesse

              J Offline
              J Offline
              jamesbronw
              wrote on last edited by
              #6

              well that code i posted doesnt work. Nothing shows up on the screen

              J M 2 Replies Last reply
              0
              • J jamesbronw

                well that code i posted doesnt work. Nothing shows up on the screen

                J Offline
                J Offline
                Jesse Squire
                wrote on last edited by
                #7

                The equivilent C# code works just fine for me. Two things that strike me from the code you posted. The line newlbl.BorderWidth.Pixel(1) isn't correct. The code should read: newlbl.BorderWidth = Unit.Pixel(1), as Pixel is a static (shared) method of the Unit class. I also don't see an End While in your code. I don't know if either is the cause of your problems, but they should be fixed none the less. You really should consider setting Option Explicit and Option Strict on all of the time, if you don't already. They will save you from alot of subtle problems. The rest of your example looks fine to me. If correcting the two points that I mentioned doesn't fix your problem, I'd suggest you start debugging. For example, you don't see anything in the browser. Have you done a "view source" and checked the HTML? Just in case you find it helpful, here is the C# translation of your code that I used to verify.

                private void Page_Load(object sender, System.EventArgs e)

                {

                Label label = null;

                for(int index = 0; index < 7; index++)

                {

                label = new Label();

                label.Text = index.ToString();

                label.BackColor = System.Drawing.Color.Blue;

                label.BorderStyle = BorderStyle.Inset;

                label.BorderColor = System.Drawing.Color.Black;

                label.BorderWidth = Unit.Pixel(1);

                J 1 Reply Last reply
                0
                • J Jesse Squire

                  The equivilent C# code works just fine for me. Two things that strike me from the code you posted. The line newlbl.BorderWidth.Pixel(1) isn't correct. The code should read: newlbl.BorderWidth = Unit.Pixel(1), as Pixel is a static (shared) method of the Unit class. I also don't see an End While in your code. I don't know if either is the cause of your problems, but they should be fixed none the less. You really should consider setting Option Explicit and Option Strict on all of the time, if you don't already. They will save you from alot of subtle problems. The rest of your example looks fine to me. If correcting the two points that I mentioned doesn't fix your problem, I'd suggest you start debugging. For example, you don't see anything in the browser. Have you done a "view source" and checked the HTML? Just in case you find it helpful, here is the C# translation of your code that I used to verify.

                  private void Page_Load(object sender, System.EventArgs e)

                  {

                  Label label = null;

                  for(int index = 0; index < 7; index++)

                  {

                  label = new Label();

                  label.Text = index.ToString();

                  label.BackColor = System.Drawing.Color.Blue;

                  label.BorderStyle = BorderStyle.Inset;

                  label.BorderColor = System.Drawing.Color.Black;

                  label.BorderWidth = Unit.Pixel(1);

                  J Offline
                  J Offline
                  jamesbronw
                  wrote on last edited by
                  #8

                  Thanks for all your help. It is greatly appriciated. I have looked at the source code and there is nothing there that should be. I have no idea whats going on with this haha. I suppose i'll have to find another way to do what i need done. Again thanks Tommy

                  J 1 Reply Last reply
                  0
                  • J jamesbronw

                    Thanks for all your help. It is greatly appriciated. I have looked at the source code and there is nothing there that should be. I have no idea whats going on with this haha. I suppose i'll have to find another way to do what i need done. Again thanks Tommy

                    J Offline
                    J Offline
                    Jesse Squire
                    wrote on last edited by
                    #9

                    My pleasure. I hope things work out for you. :) --Jesse

                    1 Reply Last reply
                    0
                    • J jamesbronw

                      well that code i posted doesnt work. Nothing shows up on the screen

                      M Offline
                      M Offline
                      minhpc_bk
                      wrote on last edited by
                      #10

                      Hi there, There are two simple things come to mind: + The code inside the while loop does not actually get reached at all. You can simply run your application in debug mode and see if that happens. + If you put this code in a custom control, then you can check if the custom control is added to the page.

                      J 1 Reply Last reply
                      0
                      • M minhpc_bk

                        Hi there, There are two simple things come to mind: + The code inside the while loop does not actually get reached at all. You can simply run your application in debug mode and see if that happens. + If you put this code in a custom control, then you can check if the custom control is added to the page.

                        J Offline
                        J Offline
                        jamesbronw
                        wrote on last edited by
                        #11

                        Ok if i put it straight into my VB form code it renders it. If i put it into a sub procedure and call it from the HTML using the <% %> it doesnt create my new objects. This is all so new to me. Do you know why it would do this?

                        M J 2 Replies Last reply
                        0
                        • J jamesbronw

                          Ok if i put it straight into my VB form code it renders it. If i put it into a sub procedure and call it from the HTML using the <% %> it doesnt create my new objects. This is all so new to me. Do you know why it would do this?

                          M Offline
                          M Offline
                          minhpc_bk
                          wrote on last edited by
                          #12

                          The reason those label controls cannot be seen at the client side is that the code to create those controls runs after the Page_PreRender event of the Page life cycle. When the page contents are rendered at the Render phase, the labels are not actually added to the page so you don't see them on the screen, you can see that when running your application in debug mode. Here, you may want to place the labels at the place where you put the code <% %> in the page, right? There are two simple ways to work around this: + You can use a container such as PlaceHolder control in the page where you want to put the labels, the sample code in code behind is like this:

                          Private Sub Page\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                              'Put user code to initialize the page here
                              RenderLabelList1()
                          End Sub
                                     
                          Protected Sub RenderLabelList1()
                              Dim lnum As Integer = 0
                              Do While lnum <= 7
                                  Dim newlbl As New Label
                                  newlbl.ID = "newlbl" & lnum
                                  newlbl.Text = lnum
                                  newlbl.BackColor = System.Drawing.Color.Blue
                                  newlbl.BorderStyle = BorderStyle.Inset
                                  newlbl.BorderColor = System.Drawing.Color.Black
                                  newlbl.BorderWidth.Pixel(1)
                                  'Page.Controls.Add(newlbl)
                                  PlaceHolder1.Controls.Add(newlbl)
                                  lnum = lnum + 1
                              Loop
                          End Sub
                          

                          + You can write out the rendered html markup of the labels to the page, the sample code in code-behind

                          Protected Function RenderLabelList() As String
                              Dim lnum As Integer = 0
                              Dim writer As System.IO.StringWriter = New System.IO.StringWriter
                              Dim buffer As System.Web.UI.HtmlTextWriter = New System.Web.UI.HtmlTextWriter(writer)
                              Do While lnum <= 7
                                  Dim newlbl As New Label
                                  newlbl.ID = "newlbl" & lnum
                                  newlbl.Text = lnum
                                  newlbl.BackColor = System.Drawing.Color.Blue
                                  newlbl.BorderStyle = BorderStyle.Inset
                                  newlbl.BorderColor = System.Drawing.Color.Black
                                  newlbl.BorderWidth.Pixel(1)
                                  'Page.Controls.Add(newlbl)
                                  newlbl.RenderControl(buffer)
                                  lnum = lnum + 1
                              Loop
                                   
                              Return writer.ToString()
                          End Function
                          

                          The markup in the web page for both two ways is simple like this:

                          <form id="Form1" method="post" runat="server">
                          <asp:PlaceHolder id="Pl

                          1 Reply Last reply
                          0
                          • J jamesbronw

                            Ok if i put it straight into my VB form code it renders it. If i put it into a sub procedure and call it from the HTML using the <% %> it doesnt create my new objects. This is all so new to me. Do you know why it would do this?

                            J Offline
                            J Offline
                            Jesse Squire
                            wrote on last edited by
                            #13

                            Minh's advice is dead-on. I just wanted to add one additional point. The use of <% %> is not considered a best practice and should be avoided if at all possible. Each time a <% %> is encountered, context switching occurrs which carries a performance penalty. If you need to inject controls at a certain location, you would be served far better by placing a container object into the HTML and manipulating it from the code-behind. For example, you could place a panel where you need to add the labels by doing <asp:Panel id = "labelHolder" runat = "server" />. In your code-behind, you would declare a protected variable of type Panel with the same name as the id: Dim labelHolder as Panel. To place your labels you would just add them to the panel's control collection: labelHolder.Controls.Add(myLabel). Hope that helps. :) --Jesse

                            J 1 Reply Last reply
                            0
                            • J Jesse Squire

                              Minh's advice is dead-on. I just wanted to add one additional point. The use of <% %> is not considered a best practice and should be avoided if at all possible. Each time a <% %> is encountered, context switching occurrs which carries a performance penalty. If you need to inject controls at a certain location, you would be served far better by placing a container object into the HTML and manipulating it from the code-behind. For example, you could place a panel where you need to add the labels by doing <asp:Panel id = "labelHolder" runat = "server" />. In your code-behind, you would declare a protected variable of type Panel with the same name as the id: Dim labelHolder as Panel. To place your labels you would just add them to the panel's control collection: labelHolder.Controls.Add(myLabel). Hope that helps. :) --Jesse

                              J Offline
                              J Offline
                              jamesbronw
                              wrote on last edited by
                              #14

                              Thanks to both of you. I am now able to atleast get the labels on the page! haha. Now i just need to figure out how to get them in the rows and columns needed. lol. Again, thanks for all your time and help Tommy

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups