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