简单的问题,很难搜索(由于问题的主要部分是单个字母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");