2015-04-22 27 views
2

爲什麼剃刀html不起作用?如果使用if子句,則剃刀不顯示

WORKS不

@if (Model.Devices.Any()) 
{ 

     foreach (var device in Model.Devices) 
    { 

     Html.Partial(MVC.Devices.Refrigerator.Views.GroupedRefrigerators, device); 

    } 
} 
else 
{ 
    <div class="alert alert-info"> 
     @(Html.Raw(xxxx) 
    </div> 
} 

WORKS

@foreach (var device in Model.Devices) 
     { 

      @Html.Partial(MVC.Devices.Refrigerator.Views.GroupedRefrigerators, device); 

     } 

回答

4

當你在一個代碼塊中,調用Html.Partial剛剛返回結果字符串到內存中。但是你沒有儲存它或者做任何事情。

但是,調用@Html.Partial會將結果字符串注入頁面。

您可以通過添加一些html元素包圍的部分固定第一模塊:

foreach (var device in Model.Devices) 
{ 
    <div> 
     @Html.Partial(MVC.Devices.Refrigerator.Views.GroupedRefrigerators, device); 
    </div> 
} 

由於@Richard指出的那樣,你也可以使用的,而不是<div>@:<text>使其呈現。

+1

你不需要使用HTML來擺脫代碼塊,你可以使用[':@'或' .....'](http://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax) – Richard

+0

是的,還有其他方法可以做到這一點,這只是一個建議。 – DLeh