如果满足某些条件,则创建HtmlHelper以显示内容

时间:2014-09-01 13:41:34

标签: asp.net-mvc

我想创建一个简单的HtmlHelper,我可以这样使用:

@using(Html.DisplayIf(Object object))
{
...
}

我尝试了建议here的方法,但与提出这个问题的人不同,我希望括号之间的内容根本不会被渲染,而不仅仅是隐藏。

有没有办法阻止文本编写者在括号之间写入内容,或者其他一些适合解决我问题的方法?

1 个答案:

答案 0 :(得分:0)

<强>被修改

您可以使用此处描述的方法:Capture wrapped content in BeginForm style disposable html helper。 我已经将第一种方法应用到您的示例中。

public static class HtmlExtensions
{
    public static HelperResult DisplayIf(this HtmlHelper html, Func<object, HelperResult> template, bool show)
    {
        return new HelperResult(writer =>
        {
            if (show)
            {
                template(null).WriteTo(writer);
            }
        });
    }
}

您可以这样称呼它:

@* Will render *@
@Html.DisplayIf(
    @<span>test1</span>, true
)
@* Will not render *@
@Html.DisplayIf(
    @<span>test2</span>, false
)