在foreach中使用DisplayFor

时间:2015-07-20 21:31:49

标签: asp.net asp.net-mvc twitter-bootstrap

我想创建一个模式框,其中包含与单击产品旁边的按钮相关联的产品标题。数据来自数据库。

我目前正在尝试使用一个整数,该整数在表中的每条记录上递增,并使用此整数来获取记录标题。但是,我没有成功打印当前迭代的产品。

我正在使用引导程序样式表。

以下是我的代码片段

     foreach (var item in Products)
      .. display Title, Description, Price, button & modal code 
         <button type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#myModal_@i"> View Product</button>

    <div class="modal fade" id="myModal_@i" role="dialog" data backdrop="false">
   <div class="modal-dialog">
      <div class="modal-content">
         <div class="modal-header">
             <button type="button" class="close" data-dismiss="modal">&times;</button>
               <h4 class="modal-title">View Product</h4>
     ---> @Html.DisplayFor(modelItem => Model.Products.ElementAt(i)) ???? 


          </div>
      <div class="modal-body" id="@i">

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

你想为每一行编号吗?如果是这样,您可以执行以下操作

@model IEnumerable<YourModel>
@{
  var count =0;
}
<table>
  <thead>
  <tr>
    <th>#</th>
    <th>@Html.DisplayNameFor(m => m.YourField)</th>
   </thead>
  <tr>
  <thead>
  <tbody>
@foreach(var item in Model)
{
  <tr>
   <td>@(count++)</td>
   <td>@Html.DisplayFor(m=> item.YourField)</td>
  </tr>
}
</tbody>
</table>

您可以根据上面的示例

应用您想要的内容

所以你可以在你的div中使用以下方式计数

<div id='@(string.Format("model_{0}",count))'>...

答案 1 :(得分:0)

根据documentation,您的Product类可能需要进行注释才能开始查看您期望的行为。

您是否修饰了要显示的产品属性?