Bre*_*ill 4 c# asp.net-mvc html-helper razor
我注意到一些Razor函数将html内容作为参数,例如:
@section Scripts {
<script type="text/javascript">
$(function() {
alert("aha");
});
</script>
}
Run Code Online (Sandbox Code Playgroud)
这不会立即渲染html内容,而是Razor的Section()系统存储它以供以后渲染.
我想编写自己的帮助函数,以相同的方式接受html内容,例如:
@Html.MyCoolFunction {
<div><stuff><blah>...
dafsdfsa
</blah></stuff></div>
}
Run Code Online (Sandbox Code Playgroud)
我不知道什么语法会起作用,但可能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);
}
Run Code Online (Sandbox Code Playgroud)
可以调用并传递阻止html内容,如下所示:
@Html.DoTwice(
@<div>What happens??</div>
)
Run Code Online (Sandbox Code Playgroud)
输出:
What happens??
What happens??
Run Code Online (Sandbox Code Playgroud)