2014-11-18 4 views
2

я получаю ошибку "NullReferenceException: ..." в вблизи @ Html.Raw (...Как использовать @ Html.Raw, ASP.NET Razor @Helper

Слышать это код. ..

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> 

кто-нибудь есть решение этой пр oblem?

+1

http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it –

+1

Помните, что вы можете использовать код отладочного сервера внутри вида. –

ответ

2

По умолчанию HtmlHelpers недоступны в App_Code, где я предполагаю, что находится Commons.cshtml.

Вы можете обойти это несколько, взяв потребляющий WebViewPage в качестве параметра и используя его для доступа к HtmlHelpers. Вам также нужно добавить инструкцию @using для System.Web.Mvc.Html.

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> 
0

Вы можете определить функцию внутри самого помощника, и вернуть MvcHtmlString, который не закодированный по умолчанию.

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

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

И вы потребляете его в любом хелперов с

@Raw("<p>your html</p>") 
Смежные вопросы