Я разрабатываю конструктор HTML-форм, который должен генерировать статический HTML-код и показывать его пользователю. Я продолжаю писать такой уродливый код:
public string GetCheckboxHtml()
{
return ("<input type = "checkbox" name = "somename" />");
}
Разве не существует набора строго типизированных классов, которые описывают элементы html и позволяют мне вместо этого писать такой код:
var checkbox = new HtmlCheckbox(attributes);
return checkbox.Html();
Я просто не могу придумать правильное пространство имен для поиска этого или правильный поисковый запрос для использования в Google.





Один из вариантов - использовать XElementфункциональная конструкция. См. это сообщение в блоге для примера генератора календаря.
В вашем случае ваш Html может быть создан с помощью:
var input = new XElement("input",
new XAttribute("type", "checkbox"),
new XAttribute("name", "somename"));
return input.ToString();
Вы можете использовать классы в пространстве имен 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();
Собственно я с тобой согласен =)
Что ж, если вы загрузите DLL-файлы ASP.NET MVC (которые вы можете использовать в проектах типа Любые ... включая консольные приложения) ... тогда вы можете использовать множество имеющихся у них помощников HTML.
Мне очень нравится это решение. Я, наверное, этим воспользуюсь. Не могу поверить, что забыл о помощниках HTML в ASP.NET MVC. Спасибо!
HtmlTextWriter содержит такие полезные вещи, как «WriteStartTag» и «WriteEndTag», которые можно довольно легко использовать для создания правильно сформированного HTML.
По сути, вы передаете тэг и атрибуты в HtmlTextWriter, и он генерирует правильный HTML и закрывает его должным образом с помощью WriteEndTag.
Вы также можете использовать предварительно написанные HTMLControls, которые превращают этот код в строго типизированные классы.
Также рассмотрите возможность использования System.Xml. Используя его, вы почти гарантируете, что ваш HTML-код совместим с XHTML.
Это кажется хорошим решением, однако меня беспокоит только «тяжелый» характер HtmlControls, включенных в ASP.NET. Я испытываю сильное отвращение к ASP.NET WebForms (я предпочитаю ASP.NET MVC), что может предвзято относиться ко мне. Я действительно ценю ваш вклад.