如何使用@ Html.Raw,ASP.NET,Razor @Helper

时间:2014-11-18 07:57:50

标签: c# asp.net razor

我收到错误" NullReferenceException:..." 在@Html.Raw附近(...

听到代码......

Commons.cshtml:

@helper BoxTitle(string CustomButtons)
{
    if (!string.IsNullOrEmpty(CustomButtons))
    {
        @Html.Raw(CustomButtons)
    }
}

view.cshtml:

<div class="box">
    @Commons.BoxTitle("<button class='sub-button'>New</button>")
    <div class="content">

    </div>
</div>

有没有人能解决这个问题?

2 个答案:

答案 0 :(得分:2)

在App_Code中无法访问默认的HtmlHelpers,这是我假设Commons.cshtml所在的位置。

你可以通过将消费的WebViewPage作为参数并使用它来获取HtmlHelpers来解决这个问题。您还需要为System.Web.Mvc.Html添加@using语句。

Commons.cshtml:

@using System.Web.Mvc.Html

@helper BoxTitle(System.Web.Mvc.WebViewPage wvp, string CustomButtons)
{
    if (!string.IsNullOrEmpty(CustomButtons))
    {
        @wvp.Html.Raw(CustomButtons)
    }
}

view.cshtml:

<div class="box">
    @Commons.BoxTitle(this, "<button class='sub-button'>New</button>")
    <div class="content">

    </div>
</div>

答案 1 :(得分:0)

您可以在帮助程序本身内定义一个函数,并返回默认情况下未编码的MvcHtmlString。

@functions
{
    static MvcHtmlString Raw(string text)
    {
        return MvcHtmlString.Create(text);
    }   
}

@helper WriteSomeHtml()
{
    @Raw("<p>some html</p>)
}

你在

的任何助手中使用它
@Raw("<p>your html</p>")