2012-12-10 116 views
4

我已經編寫了一個HtmlHelper擴展來格式化一些基於我們某些樣式的內容。 當不包含在if中時,助手會正確呈現內容。剃刀內部的HtmlHelper「if」語句

但是,當我試圖將它們包裝在剃刀if語句中時,沒有任何渲染,我懷疑它與Razor語法有關,我沒有正確地做。

代碼:

<div class="notice"> 

    @if (DataModel.UserHasExpired) 
    { 
     Html.MyCustomNotificationBox("someparameter") // My helper Should render a div 
    } 

</div> 

如果我把我的notificationbox的如果它工作正常外面。我還驗證了代碼正在放入該塊,但是當我檢查它時,沒有在HTML中生成標記。

我已經試過appening一個@像這樣,用冒號

@Html.MyCustomNotificationBox("somparameter"); 

我甚至試過@ Html.Raw結束(..上述..),這完全錯誤的。

任何想法?

+0

可能有助於如果您包括了你的助手代碼。 –

回答

19

你有沒有試過把它放在text標籤(這些標籤沒有發送到客戶端)?

@if (DataModel.UserHasExpired) 
{ 
    <text>@Html.MyCustomNotificationBox("somparameter")</text> 
} 
+1

在這種情況下,標記可能是合適的,但使用'@'符號似乎更加原生。 – hanzolo

6
<p> 
    @if (true) 
    { 
     @Html.Hello("World") 
    } 
</p> 

工作完全正常

+0

我更喜歡這個,因爲它避免了自定義標記 – hanzolo