В C # 3.0 есть ли классы, которые помогают мне генерировать статический HTML? - PullRequest
5 голосов
/ 08 ноября 2008

Я разрабатываю конструктор форм HTML, который должен генерировать статический HTML и показывать его пользователю. Я продолжаю писать ужасный код, подобный этому:

public string GetCheckboxHtml()
{
    return ("<input type="checkbox" name="somename" />");
}

Нет ли набора строго типизированных классов, которые описывают элементы html и позволяют мне вместо этого писать такой код:

var checkbox = new HtmlCheckbox(attributes);
return checkbox.Html();

Я просто не могу придумать правильное пространство имен для поиска этого или правильного поискового запроса для использования в Google.

Ответы [ 5 ]

5 голосов
/ 08 ноября 2008

Что ж, если вы загрузите DLL-библиотеки ASP.NET MVC (которые вы можете использовать в проектах любого типа ... включая консольные приложения) ... тогда вы можете использовать у них много помощников HTML.

2 голосов
/ 08 ноября 2008

Вы можете использовать классы в пространстве имен System.Web.UI.HtmlControls. Затем вы можете использовать RenderControl для генерации HTML-контента.

HtmlInputCheckBox box = new HtmlInputCheckBox();

StringBuilder sb = new StringBuilder();
using(StringWriter sw = new StringWriter(sb))
using(HtmlTextWriter htw = new HtmlTextWriter(sw))
{
    box.RenderControl(htw);
}
string html = sb.ToString();
2 голосов
/ 08 ноября 2008

Один из вариантов - использовать XElement функциональную конструкцию . См. это сообщение в блоге для примера генератора календаря.

В вашем случае ваш HTML может быть сгенерирован с:

var input = new XElement("input",
    new XAttribute("type", "checkbox"),
    new XAttribute("name", "somename"));

return input.ToString();
0 голосов
/ 08 ноября 2008

Также рассмотрите возможность использования System.Xml. Используя его, вы почти гарантируете, что ваш HTML соответствует XHTML.

0 голосов
/ 08 ноября 2008

HtmlTextWriter содержит полезности, такие как «WriteStartTag» и «WriteEndTag», которые могут быть использованы для довольно простого создания правильно сформированного HTML.

По сути, вы передаете тэг и атрибуты в HtmlTextWriter, и он генерирует правильный HTML и корректно закрывает его с помощью WriteEndTag.

Вы также можете использовать предварительно написанные HTMLControls, которые оборачивают этот код в строго типизированные классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...