2017-05-11 6 views
1

Ich versuche, einen Helfer in App_Code in cshtml-Datei zu machen.ASP.NET MVC Razor Helfer mit @HTML in 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> 
} 

Ich weiß nicht, ob das möglich ist. Ich habe einige Fehler:

  • @Html wissen nicht LabelFor, aber ich habe die oben mit

  • Vielleicht Func als Parameter

+0

Dies ist möglich, überprüfen Sie diese Antwort, wie Sie den HTML-Helfer in Ihrer Hilfsmethode verwenden: http://Stackoverflow.com/a/12826750/1708859 –

Antwort

0

Keine falsch ist, ist dies nicht möglich. Sie könnten einen normalen HTML-Helfer mit @Html.LabelFor schreiben, weil Ihre Ansicht stark typisiert ist. Die getippte @Html.LabelFor erzeugt Ihr Etikett für Sie. Dies ist normalerweise nur der Name der Eigenschaft, aber für komplexe Eigenschaften, und Sie können die Überprüfung der Kompilierzeit verwenden.

können Sie etwas wie this beantworten.