HtmlTextWriter
This writes HTML markup. With it we do not have to deal directly with the syntax. We do this by adding elements with RenderBeginTag
and RenderEndTag
.
HtmlTextWriter
can lead to more reliable HTML generation methods. There may be less syntax errors and problems with escaped quotes.
This program introduces GetDivElements
, which returns a string
of HTML div elements. In the function, we create a StringWriter
, which serves as the backing store of the HtmlTextWriter
.
HtmlTextWriter
as pass it the StringWriter
instance in its New function.RenderBeginTag
, you can pass a string
of the element name or a constant value in the HtmlTextWriterTag
enumeration.RenderEndTag
. This ends the element HTML.Imports System.IO Imports System.Web.UI Module Module1 Dim _words As String() = {"dot", "net", "perls"} Function GetDivElements() As String Using sw As StringWriter = New StringWriter Using ht As HtmlTextWriter = New HtmlTextWriter(sw) For Each word As String In _words ' Create the div. ht.AddAttribute(HtmlTextWriterAttribute.Class, "c") ht.RenderBeginTag(HtmlTextWriterTag.Div) ' Create the a. ht.AddAttribute(HtmlTextWriterAttribute.Href, word) ht.RenderBeginTag(HtmlTextWriterTag.A) ' Create the img. ht.AddAttribute(HtmlTextWriterAttribute.Src, word + ".png") ht.AddAttribute(HtmlTextWriterAttribute.Width, "200") ht.AddAttribute(HtmlTextWriterAttribute.Height, "150") ht.RenderBeginTag(HtmlTextWriterTag.Img) ' End all the tags. ht.RenderEndTag() ht.RenderEndTag() ht.RenderEndTag() Next End Using Return sw.ToString() End Using End Function Sub Main() Console.WriteLine(GetDivElements()) End Sub End Module<div class="c"> <a href="dot"><img src="dot.png" width="200" height="150" /></a> </div><div class="c"> <a href="net"><img src="net.png" width="200" height="150" /></a> </div><div class="c"> <a href="perls"><img src="perls.png" width="200" height="150" /></a> </div>
Attributes can be added before the RenderBeginTag
function is called. We set up class
attributes, href attributes, src attributes, and width and height attributes on each loop iteration.
HtmlTextWriter
, it is best to pass it a buffer you are already using instead of a StringWriter
.TextWriter
. Try passing a buffer to HtmlTextWriter
and see if the program compiles.We used the HtmlTextWriter
type from the System.Web
namespace. With this type, we can generate HTML in-memory, without having to deal with all those syntactic complexities of HTML.