Esto se puede lograr dentro de un archivo de ayuda con la @functions
sintaxis, pero si desea la legibilidad de estilo navaja a la que se refiere, también deberá llamar a un ayudante habitual para que ajuste y termine el HTML.
Tenga en cuenta que las funciones en un archivo Helper son estáticas, por lo que aún deberá pasar la instancia de HtmlHelper desde la página si tiene la intención de usar sus métodos.
por ejemplo, Views \ MyView.cshtml:
@MyHelper.DoSomething(Html, m=>m.Property1)
@MyHelper.DoSomething(Html, m=>m.Property2)
@MyHelper.DoSomething(Html, m=>m.Property3)
App_Code \ MyHelper.cshtml:
@using System.Web.Mvc;
@using System.Web.Mvc.Html;
@using System.Linq.Expressions;
@functions
{
public static HelperResult DoSomething<TModel, TItem>(HtmlHelper<TModel> html, Expression<Func<TModel, TItem>> expr)
{
return TheThingToDo(html.LabelFor(expr), html.EditorFor(expr), html.ValidationMessageFor(expr));
}
}
@helper TheThingToDo(MvcHtmlString label, MvcHtmlString textbox, MvcHtmlString validationMessage)
{
<p>
@label
<br />
@textbox
@validationMessage
</p>
}
...