我注意到一些 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??