2017-05-11 136 views
1

我嘗試在cshtml文件中的App_Code中創建一個Helper。ASP.NET MVC Razor Helper with @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> 
} 

我不知道這是否可能。我有一些錯誤:

  • @Html不知道LabelFor,但我放到了首位

  • 的使用也許Func鍵作爲參數錯誤

+0

這是可能的,請檢查此答案如何在幫助程序方法中使用Html助手:http://stackoverflow.com/a/12826750/1708859 –

回答

0

不,這不是可能。你可以用@Html.LabelFor寫一個普通的HTML幫手,因爲你的視圖是強類型的。鍵入的@Html.LabelFor會爲你生成你的標籤。這通常只是屬性名稱,但對於複雜類型的屬性,它將允許您使用編譯時檢查。

你可以做一些事情,如this答案。