2017-05-11 1 views
1

J'essaie de créer une aide dans App_Code dans le fichier cshtml.Aide ASP.NET MVC Razor avec @HTML dans App_Code

// Using's are needed to ensure helpers function correctly. 
@using System.Web.Mvc; 
@using System.Web.Mvc.Html; 
@using System.Web.Mvc.Routing; 
@using System.Web.Mvc.Razor; 
@functions { 
    private static WebViewPage page { get { return PageContext.Page as WebViewPage; } } 
    private static System.Web.Mvc.HtmlHelper<dynamic> html { get { return page.Html; } } 
    private static UrlHelper url { get { return page.Url; } } 
    private static dynamic viewBag { get { return page.ViewBag; } } 
} 

@helper HelperName(Func<dynamic, dynamic> expression) 
{ 
    <div class="form-group"> 
     @Html.LabelFor(model => expression, new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => expression, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => expression) 
     </div> 
    </div> 
} 

Je ne sais pas si c'est possible. J'ai quelques erreurs:

  • @Html ne savent pas LabelFor, mais je mets l'utilise sur le dessus

  • Peut-être Func comme paramètre est erroné

+0

Ceci est possible, vérifiez cette réponse comment utiliser l'aide Html dans votre méthode d'assistance: http://stackoverflow.com/a/12826750/1708859 –

Répondre

0

Non, ce n'est pas possible. Vous pouvez écrire une aide HTML normale avec @Html.LabelFor parce que votre vue est fortement typée. Le @Html.LabelFor tapé génèrera votre étiquette pour vous. Ceci est généralement juste le nom de la propriété mais pour les propriétés de type complexe et il vous permettra d'utiliser la vérification de temps de compilation.

vous pouvez faire quelque chose comme this réponse.