ASP.NET control to render a <div>
Asked Answered
J

6

41

The Label control in ASP.NET seems to render <span> tags, but is there a server control to render HTML within a <div>?

Sure, I could set display: block and it might look the same, but I'd rather not be nesting divs inside spans. Also I'd prefer not to use <%= MyVariable %> because that might not behave nicely on postbacks.

Any suggestions, please?

Jandy answered 15/4, 2011 at 9:57 Comment(0)
I
31

I think you need HtmlGenericControl class. It has a constructor which accepts a string variable which initializes a new instance of the HtmlGenericControl class with the specified tag:

var div = new HtmlGenericControl("div");

It is also has InnerHtml and InnerText properties (you mentioned this in a comment to the previous answer).

Invalidity answered 15/4, 2011 at 10:18 Comment(4)
Thanks. Could I put this directly in the page markup, or does it have to be added to a Panel?Jandy
You could use it in markup like: <div runat="server" id="myPerfectDiv">my inner text here</div>Invalidity
Cool. What's the difference between the InnerText and InnerHtml properties? Should I just use InnerHtml?Jandy
InnerText property provides automatic HTML encoding/decoding. See: e.g., if the InnerText property is set to <b> Hello </b>, the < and > symbols are converted to &lt; and &gt;, respectively. Fot the InnerHtml property the rendered output would be: <b> Hello </b>.Invalidity
C
67

Of course: ASP.NET has a built-in control called Panel!

And you may use it as follows:

<asp:Panel ID="myPanel" runat="server">
    <!-- Other markup here like client and server controls/elements -->
</asp:Panel>

It's a container, so you add Controls to it in the code-behind like:

myPanel.Controls.Add(new LiteralControl("Hello World"));

You can add the Literal control (or any others) in the markup if you like and just assign to its Text property if you want it to update dynamically at runtime.

Concoct answered 15/4, 2011 at 9:58 Comment(2)
If I would decide to use Panel how will I add new HTML element attributes like ones for which Panel doesn't have a corresponding property?Harmonica
@MirceaIon As any other WebControl, you've the Attributes property: msdn.microsoft.com/en-us/library/…Jeanejeanelle
I
31

I think you need HtmlGenericControl class. It has a constructor which accepts a string variable which initializes a new instance of the HtmlGenericControl class with the specified tag:

var div = new HtmlGenericControl("div");

It is also has InnerHtml and InnerText properties (you mentioned this in a comment to the previous answer).

Invalidity answered 15/4, 2011 at 10:18 Comment(4)
Thanks. Could I put this directly in the page markup, or does it have to be added to a Panel?Jandy
You could use it in markup like: <div runat="server" id="myPerfectDiv">my inner text here</div>Invalidity
Cool. What's the difference between the InnerText and InnerHtml properties? Should I just use InnerHtml?Jandy
InnerText property provides automatic HTML encoding/decoding. See: e.g., if the InnerText property is set to <b> Hello </b>, the < and > symbols are converted to &lt; and &gt;, respectively. Fot the InnerHtml property the rendered output would be: <b> Hello </b>.Invalidity
P
8

Try the Panel control.

Prepositor answered 15/4, 2011 at 9:59 Comment(0)
P
5

Try this:

<div class="myclass">
<asp:Literal ID="mytext" runat="server"></asp:Literal>
</div>

Set your text inside Literal, which renders without html tag

Petronella answered 8/12, 2015 at 21:14 Comment(0)
O
2
<asp:Panel>
<div id="NoRecords" runat="server" visible="false">No records are available.</div>
</asp:Panel>

Code-Behind

 protected void MyRepeater1_PreRender(object sender, EventArgs e)
{
    if (MyRepeater1.Items.Count == 0)
    {
        NoRecords.Visible = true;
    }
    else
    {
        NoRecords.Visible = false;
    }
}
Obara answered 9/1, 2013 at 12:8 Comment(0)
F
0
div runat="server" id="myserversideDiv" 

my inner text here. It has inner text and inner html property and most of asp.net server control property. Try that.

Fume answered 20/11, 2015 at 14:16 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.