繁体   English   中英

如何接受html内容作为MVC + Razor中辅助函数的参数?

[英]How to accept html content as a parameter to a helper function in MVC+Razor?

我注意到一些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作为参数,我可以用它做我想做的事情。

这可能吗?

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

像这样的扩展函数:

    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??

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM