Хороший вопрос.
Я бы подумал, что элементы управления вводом (например, input, select) заключены в помощники Html, чтобы они могли поддерживать свое собственное состояние через TempData без необходимости писать много кода для этого. Я бы также подумал, что элементы управления ссылками и формами обернуты, чтобы дать простой и унифицированный способ указать контроллер / действие для этих элементов управления. Большинство других элементов управления не требуют ни готового управления состоянием, ни встроенных URL-адресов контроллера / действия.
Конечно, ничто не мешает вам писать свои собственные обертки для любого элемента управления, который вам нравится - например, вот пара, которую я использую - вот для элемента управления html-меткой:
public static string Label(this HtmlHelper helper, string fieldName, string labelText)
{
var sb = new StringBuilder();
sb.Append("<label for=\"");
sb.Append(fieldName);
sb.Append("\">");
sb.Append(labelText);
sb.Append("</label>");
return sb.ToString();
}
А вот еще один, который я использую, который обертывает этот помощник надписи и текстовое поле для создания единого поля ввода текста с меткой:
public static string TextField(this HtmlHelper helper, string labelText, string fieldName, string value)
{
return string.Concat(
"<div>",
helper.Label(fieldName, labelText),
helper.TextBox(fieldName, value),
"</div>");
}