2016-01-24 2 views
0

Я использую Список продуктов в качестве модели для частичного просмотра. В частичном представлении я использую цикл foreach, чтобы получить значения класса Product и попытаться отобразить его пользователям. В частичном виде я написал этот код:Частичный вид не отображает элементы td внутри тега бритвы foreach

@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 (Products prod in Model.products) 
{ 
    <tr> 
     <td>@prod.Name.ToString()</td> 
     <td>@prod.Cost.ToString()</td> 
    </tr> 

} 

, и если вы хотите придерживаться своего пути, то вы должны указать сделайте это как html like:

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

    } 
} 
+0

Спасибо за ваш комментарий, но он все еще не работает. Возможно ли, что мой файл jQuery вмешивается в это? Я фактически отправляю данные методом $ .post методу Action и возвращая представление cshtml из этого метода. В методе $ .post для jQuery я помещаю null как Function Success. –

+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> 
} 

Но это тот же самый ответ, что другой пользователь дал вам.

Смежные вопросы