【问题标题】:How to accept html content as a parameter to a helper function in MVC+Razor?如何接受 html 内容作为 MVC+Razor 中辅助函数的参数?
【发布时间】:2013-12-14 00:32:55
【问题描述】:

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

这可能吗?

【问题讨论】:

  • 有时 Google 比提问更快、更容易 - develoq.net/2011/…
  • 你是认真的吗?这不是我的问题。我知道如何编写辅助函数,我的问题是如何将块 html 内容作为参数接收到辅助函数。
  • 呃...撤消反对票?

标签: c# asp.net-mvc razor html-helper


【解决方案1】:

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

这样的扩展函数:

    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);
    }

可以调用&传递block html内容,像这样:

@Html.DoTwice(
    @<div>What happens??</div>
)

输出:

What happens??
What happens??

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2020-06-28
    相关资源
    最近更新 更多