我注意到一些 Razor 函数将 html 内容作为参数,例如:

@section Scripts  {
    <script type="text/javascript">
        $(function() {
            alert("aha");
        });
    </script>
}

这不会立即呈现 html 内容,而是 Razor 的 Section() 系统存储它以供以后呈现。

我想编写我自己的辅助函数,它以相同的方式接受 html 内容,例如:
@Html.MyCoolFunction {
    <div><stuff><blah>...
    dafsdfsa
    </blah></stuff></div>
}

我不知道什么语法会起作用,但大概 MyCoolFunction 会接受一个 MvcHtmlString 作为参数,我可以用它做我想做的事。

这可能吗?

最佳答案

我设法从智能感知和其他代码示例中解决了这个问题。

像这样的扩展函数:

    public static MvcHtmlString DoTwice(this HtmlHelper htmlHelper, Func<MvcHtmlString, HelperResult> htmlContent)
    {
        var x = htmlContent(new MvcHtmlString("")).ToHtmlString() +
                htmlContent(new MvcHtmlString("")).ToHtmlString();
        return new MvcHtmlString(x);
    }

可以调用&传递块html内容,像这样:
@Html.DoTwice(
    @<div>What happens??</div>
)

输出:
What happens??
What happens??

10-08 11:23