2016-01-24 74 views
0

我使用產品列表作爲我的部分視圖的模型。在部分視圖中,我使用foreach循環來獲取Product類的值並嘗試將其呈現給用戶。在局部視圖我寫這段代碼:部分視圖不會在foreach剃鬚刀標籤內呈現td元素

@model Project.ViewModel.ListofProductsVM 
@using Project.Models 
<table> 
<tr> 
    <th> 
     Name 
    </th> 
    <th> 
     Cost 
    </th> 
</tr> 
@{ 
    foreach (Products prod in Model.products) 
    { 
     <tr> 
      <td>@prod.Name.ToString()</td> 
      <td>@prod.Cost.ToString()</td> 
     </tr> 

    } 
} 
</table> 

我可以看到頭「名稱」「成本」的頁面,但產品名稱和它的成本不渲染。當我檢查HTML源代碼,它只是我看這個HTML:

<table> 
<tr> 
    <th> 
     Name 
    </th> 
    <th> 
     Cost 
    </th> 
</tr> 
</table> 

在調試,我可以看到的值正確獲取傳遞到局部視圖。即使是「@ prod.Name」「@ prod.Cost」正在向我顯示正確的值。但它不會將其呈現給HTML。我不明白我在這裏做錯了什麼。提前致謝。

回答

0

@{ }意味着這是C#代碼塊,你可以寫你的foreach循環代碼這種方式解決問題:

@foreach (Products prod in Model.products) 
{ 
    <tr> 
     <td>@prod.Name.ToString()</td> 
     <td>@prod.Cost.ToString()</td> 
    </tr> 

} 

,如果你想堅持自己的方式,那麼你必須指定渲染,如html一樣:

@{ 
    foreach (Products prod in Model.products) 
    { 
    @:<tr> 
     @:<td>@prod.Name.ToString()</td> 
     @:<td>@prod.Cost.ToString()</td> 
    @:</tr> 

    } 
} 
+0

感謝您的評論,但它仍然無法正常工作。我的jQuery文件是否可能干擾此?我實際上是通過$ .post方法將數據發佈到Action方法,並從該方法返回cshtml視圖。在jQuery的$ .post方法我把null作爲函數成功。 –

+0

請顯示您的jQuery代碼 –

0

我有一個類似的問題。就我而言,我所需要的只是在foreach嵌套在if語句之前添加「@」。這是我的工作代碼的縮減片段

C# Model class: 

public class MyModel 
{ 
    public string FirstName{ get; set; } 
    public string LastName{ get; set; } 
} 

CSHTML file: 

@model List<MyProject.Models.MyModel> 

@if (Model.Count > 0) 
{ 
    <div class="row" > 
     <table> 
      @foreach (var item in Model) 
      { 
       <tr>@item.FirstName @item.LastName</tr> 
      } 
     </table> 
    </div> 
} 

但是,與其他用戶給予您的答案相同。