Для начала вам нужно изучить методы расширения и, более конкретно, как создавать методы расширения для класса HtmlHelper, чтобы вы могли написать код, подобный приведенному выше примеру.
Для приведенного выше примера вы можете написать код, подобный этому:
public MvcHtmlString VTextBox(string name, object value, object htmlAttributes)
{
StringBuilder html = new StringBuilder();
// Build your html however you want
// Here's a simple example that doesn't
// take into account your validation needs
html.AppendFormat("input type=\"text\" name=\"{0}\" value=\"{1}\" />", name, value);
return MvcHtmlString(html.ToString());
}
Тогда, на ваш взгляд, вы можете использовать приведенный выше пример так:
@Html.VTextBox("MyTextBox","",new {@vType="PhoneNumber", @vMessage="You Must Enter a Phone Number" })
ПРИМЕЧАНИЕ. Вам нужно будет импортировать пространство имен, к которому относится метод расширения. Самый простой способ, поместите @using ExtensionMethodNamespace
вверху вашего представления. Вы можете сделать так, чтобы пространство имен автоматически импортировалось во все ваши представления, переключаясь с web.config (и, возможно, Global.asax).
ADDENDUM: Обратите внимание на комментарий RPM1984 ниже, где он советует использовать TagBuilder вместо StringBuilder, что является разумным советом, поскольку именно для этого и был разработан TagBuilder. Он также упоминает о строгом наборе помощника для модели, что также является отличным советом.