Я создаю веб-сайт ASP.NET MVC 2 и сейчас у меня есть ужасный код спагетти, который я хотел бы превратить в собственный HtmlHelper. Текущий код в представлении:
<%switch (Model.fiFieldTypeID) %>
<%
{
case 1: // Text area
Response.Write(Html.Encode(Html.TextAreaFor(model => model.fiStrValue)));
Response.Write(Html.Encode(Html.ValidationMessageFor(model => model.fiStrValue)));
break;
case 2: // Text box
Response.Write( Html.Encode(Html.TextBoxFor(model => model.fiStrValue)));
Response.Write( Html.Encode(Html.ValidationMessageFor(model => model.fiStrValue)));
break;
etc....
Я пытался инкапсулировать этот код в аккуратный маленький HtmlHelper. Вот как я начал:
public class FormHelpers
{
public static MvcHtmlString GetStreamFieldEditor(this HtmlHelper html, FieldInstance field)
{
string output = "";
switch (field.fiFieldTypeID)
{
case 1: // Text area
output += html.TextAreaFor(field=> field.fiStrValue).ToString();
etc....
Я знаю, что моя лямда не права ... но меня больше беспокоит то, что TextAreaFor
не доступен как метод. Тем не менее, старый добрый TextArea
доступен. Я не хочу использовать TextArea
, потому что мне нужно сохранить привязку моей модели. Как я могу использовать TextAreaFor
, TextBoxFor
и т. Д. В своем настраиваемом помощнике по html?