是否可以使用 Razor 创建通用的 @helper 方法?

2023-12-01

我正在尝试在 Razor 中编写一个助手,如下所示:

@helper DoSomething<T, U>(Expression<Func<T, U>> expr) where T : class

不幸的是,解析器认为<T是 HTML 元素的开头,但最终出现语法错误。是否可以使用 Razor 创建一个通用方法的助手?如果是这样,语法是什么?


This is可以在辅助文件中实现@functions语法,但如果您想要所指的剃刀式可读性,您还需要调用常规助手来完成 HTML 调整和完成。

请注意,Helper 文件中的函数是静态的,因此如果您打算使用其方法,您仍然需要从页面传入 HtmlHelper 实例。

例如 视图\MyView.cshtml:

@MyHelper.DoSomething(Html, m=>m.Property1)
@MyHelper.DoSomething(Html, m=>m.Property2)
@MyHelper.DoSomething(Html, m=>m.Property3)

应用程序代码\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>
}
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 Razor 创建通用的 @helper 方法? 的相关文章

随机推荐