Существует ли ASP.NET WebControl для тега<p>?
Простой вопрос, который трудно найти (поскольку основная часть вопроса состоит из одной буквы p
)!
В ASP.NET <asp:Panel/>
отображается как <div></div>
блок, <asp:Label/>
отображается как <span></span>
блок... есть тот, который отображается как <p></p>
блок?
Это не похоже на MSDN для класса WebControl, но я решил спросить, если пропустил что-то очевидное.
(Я понимаю, что очевидное решение состоит в том, чтобы просто использовать <p runat="server" id="p1"></p>
и использовать общий класс управления HTML)
3 ответа
Нет, нет встроенного контроля специально для <p>
, LiteralControl
или <p runat="server" />
версия, которую вы дали, является ближайшей к вам.
Вы всегда можете создать свой собственный контроль, хотя. Вы можете создать класс, который реализует WebControl
и переопределить Render
метод:
protected override void Render(HtmlTextWriter output)
{
output.WriteFullBeginTag("p");
output.Write(this.Text);
output.WriteEndTag("p");
}
Здесь есть дополнительные инструкции о том, как написать свой собственный серверный элемент управления:
И список всех.NET веб и серверных элементов управления здесь:
У меня была точно такая же проблема. После того, как я начал использовать подобную технику, которую использует здесь Кори, я нашел еще более простую, которая в основном делает то же самое и решает ваши проблемы. Тем не менее, он имеет одно преимущество по сравнению с решением, приведенным выше: вам не нужно передавать весь контроль самостоятельно.
В основном все, что вам нужно сделать, это следующее:
- Создайте свой собственный элемент управления, наследуя, например, элемент управления Label.
- Переопределить
RenderBeginTag()
метод. - Напишите свой собственный тег, например
p
, - Конечный тег будет написан автоматически.
- Ваш новый тег теперь заменит тег по умолчанию (
span
в этом примере).
Смотрите код ниже:
public class P : Label
{
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.RenderBeginTag("p");
}
}
Хотя нет специального класса для <p>
элемент, вы можете использовать HtmlGenericControl
чтобы генерировать <p>
пометить как это:
var p = new HtmlGenericControl("p");