Cela est possible à l'intérieur d'un fichier d'aide avec la @functions
syntaxe, mais si vous voulez la lisibilité de style rasoir à laquelle vous faites référence, vous devrez également appeler un assistant régulier pour faire l'ajustement et la finition HTML.
Notez que les fonctions d'un fichier Helper sont statiques, vous devrez donc toujours transmettre l'instance HtmlHelper de la page si vous aviez l'intention d'utiliser ses méthodes.
par exemple 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>
}
...