【问题标题】:how to iterate a list variable in html using razor如何使用剃刀迭代html中的列表变量
【发布时间】:2015-02-07 09:08:38
【问题描述】:

我是 asp .net 和 MVC 的新手。我有一个名为 Jumbo() 的服务方法。此方法返回一个包含名字、姓氏和联系电话的列表。我从我的主要项目中调用此方法,如下所示。我也将它返回到查看页面。

var info = add.jumbo();
ViewData["sample"] = info;

return View("FormResults");

当我调试代码时,变量“info”包含我需要的所有数据。问题是如何使用剃刀迭代 html 表中的变量。我搜索了很多以找到解决方案,但我失败了。请帮我解决。提前致谢。

【问题讨论】:

    标签: c# asp.net html asp.net-mvc-4 razor


    【解决方案1】:
    @model  Models.Nodes 
    @foreach (var item in Model)
    {
     <li>
        <span> item.name </span>
     </li>
    }
    

    【讨论】:

      【解决方案2】:

      案例 1: 基本上,您可以在应用程序本身中观察到这一点。 MVC 本身为您提供答案。什么时候 ?当您针对返回列表的操作创建视图时。说出您的操作返回客户列表,然后您可以观察以下代码。

      @model IEnumerable<Customer>
      
      <h2>Customers</h2>
      <p>
          @Html.ActionLink("Create New", "CreateCustomer", "ControllerName")
      </p>
      <table>
          <tr>
      
              <th>
                  @Html.DisplayNameFor(model => model.Email)
              </th>
              <th>
                  @Html.DisplayNameFor(model => model.Name)
              </th>
              <th></th>
          </tr>
      
          @foreach (var item in Model)
          {    
              <tr>           
                  <td>
                      @Html.DisplayFor(modelItem => item.Email)
                  </td>
                  <td>
                      @Html.DisplayFor(modelItem => item.Name)
                  </td>
      
                      <td>                        
      
                          @Html.ActionLink("Edit |", "UpdateCustomer", new { id =  item.Id}) 
                          @Html.ActionLink("Details", "Details", new { id =  item.Id}) 
                          @Html.ActionLink("Delete", "Delete", new { id =  item.Id})                      
                     </td>           
              </tr>
          }
      </table>
      

      案例 2: 您的情况是当您在 ViewData 中发送列表时。然后您必须将 ViewData 转换为相应的模型列表,然后您可以执行相同的 foreach 循环。 行动: var info = add.jumbo(); ViewData["sample"] = info;

      return View("FormResults");
      

      查看:

        @if (ViewData["sample"] != null)
          {
              List<Info> infoList = (List<Info>)ViewData["sample"];
              foreach (var i in infoList)
              { 
              //Perform your html here enclosed with html tags.
              }        
          }
      

      【讨论】:

        【解决方案3】:

        在你看来,写一个 foreach 循环如下

        @model List<Object>
        @foreach(var item in Model)
        {
          item.YourProperty;//without html
          <label>@item.YourProperty</label> //in html
        }
        

        【讨论】:

          【解决方案4】:

          首先你需要将模型传递给视图:

          return View("FormResults", info);
          

          在视图中,你需要声明模型的类型,并使用@来表示代码而不是html:

          @model List<Foo> // Whatever your list is
          @foreach (var item in Model)
          {
              <span>@item.Text</span>
          }
          

          这里有一篇关于它的详细博客:http://weblogs.asp.net/scottgu/asp-net-mvc-3-new-model-directive-support-in-razor

          【讨论】:

          • 我不使用模型。我从控制器调用服务并将其存储在变量中。我也将我的数据传递给视图。我的服务有一个单独的项目。实际上,我不确定我是否做得正确。请帮帮我
          • 考虑我在 project1 中有我的服务方法 Jumbo(),我从 project2 调用该方法。我在 project1 中有一个名为 UserTable 的列表。我从 db 中检索数据并将其存储在该列表(project1)中。从我的 project2 中,我直接调用该方法并将其存储到一个变量中。如何将该列表包含到我在 project2 中的视图中?请帮帮我...
          • @user3627446 如果UserTable 是类名,则将Foo 从此答案更改为UserTable 并将item.Text 更改为正确的属性名称,即item.FirstName。
          • 我尝试将 Foo 替换为 List 但它显示错误“只有赋值、调用、递增、递减、等待和新对象表达式可以用作语句”
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-04-16
          • 2012-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多