在App_Code中使用@HTML的ASP.NET MVC Razor Helper

时间:2017-05-11 07:03:00

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我尝试在cshtml文件中的App_Code中创建一个Helper。

// 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 as参数错误

1 个答案:

答案 0 :(得分:0)

不,这是不可能的。您可以使用@Html.LabelFor编写一个普通的HTML帮助器,因为您的视图是强类型的。键入的@Html.LabelFor将为您生成标签。这通常只是属性名称,但对于复杂类型的属性,它允许您使用编译时检查。

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