简单的问题,很难搜索(由于问题的主要部分是单个字母p
)!
在 ASP.NET 中,<asp:Panel/>
呈现为<div></div>
块,<asp:Label/>
呈现为<span></span>
块......有没有呈现为<p></p>
块的?
它看起来不像MSDN 中的 WebControl 类,但我想我会问,以防我错过了一些明显的东西。
(我意识到显而易见的解决方案是只使用<p runat="server" id="p1"></p>
和使用通用 html 控件类)
简单的问题,很难搜索(由于问题的主要部分是单个字母p
)!
在 ASP.NET 中,<asp:Panel/>
呈现为<div></div>
块,<asp:Label/>
呈现为<span></span>
块......有没有呈现为<p></p>
块的?
它看起来不像MSDN 中的 WebControl 类,但我想我会问,以防我错过了一些明显的东西。
(我意识到显而易见的解决方案是只使用<p runat="server" id="p1"></p>
和使用通用 html 控件类)
不,没有专门针对<p>
. ALiteralControl
或您提供的<p runat="server" />
版本是您将获得的最接近的版本。
不过,您始终可以创建自己的控件。您可以创建一个实现 的类WebControl
,并覆盖该Render
方法:
protected override void Render(HtmlTextWriter output)
{
output.WriteFullBeginTag("p");
output.Write(this.Text);
output.WriteEndTag("p");
}
这里有更多关于如何编写自己的服务器控件的说明:
以及所有 .NET Web 和服务器控件的列表:
我有完全相同的问题。在我开始使用 Cory 在这里使用的类似技术后,我发现了一种更简单的技术,它基本上做同样的事情并解决了你的问题。但是,与上述解决方案相比,它有一个好处:您不必自己渲染整个控件。
基本上你需要做的就是以下几点:
RenderBeginTag()
方法。 p
.span
在本例中)。请参见下面的代码:
public class P : Label
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.RenderBeginTag("p");
}
}
尽管元素没有特殊的类<p>
,但您可以使用它HtmlGenericControl
来生成<p>
标签,如下所示:
var p = new HtmlGenericControl("p");