防止发生使用声明

时间:2011-10-02 15:46:57

标签: c# asp.net-mvc razor

我想要一个自定义视图模式,以显示在线用户文本,而不是在线用户显示其他文本。

但是我想在使用声明中像Html.BeginForm()那样做。

我已经让一个女巫可以在使用和文本的开头写文本,但我不能让它阻止{}中的文本发生。

@using (AuthorizedContent(Html, "Adminstrator"))
{
    <text>Only the administrator should see this</text>
}

public static Test AuthorizedContent(this HtmlHelper helper, String roleName)
{
    return null;
    var test = new Test(helper);
    return test;
}

public class Test : IDisposable
{
    private HtmlHelper _helper;

    public Test(HtmlHelper helper) {
        _helper = helper;
        this.StartTag();
    }

    public void StartTag()
    {
        var writer = _helper.ViewContext.Writer;
        writer.Write("Hello");
    }

    public void EndTag()
    {
        var writer = _helper.ViewContext.Writer;
        writer.Write("Hello");
    }

    void IDisposable.Dispose()
    {
        this.EndTag();
    }
}

1 个答案:

答案 0 :(得分:3)

您无法阻止using的正文在Razor页面中呈现。如果您想阻止呈现某些内容,请使用if条件:

@if (AuthorizedContent(Html, "Adminstrator"))
{
    <text>Only the administrator should see this</text>
}

或者查看这个方法的名称,也许你正在尝试重新发明已经存在的东西:

@if (User.IsInRole("Adminstrator"))
{
    <text>Only the administrator should see this</text>
}