2014-12-09 111 views
1

我是asp.net和MVC的新手。我有一个名为Jumbo()的服务方法。此方法返回一个包含名字,姓氏和联系号码的列表。我从下面的主项目中调用这个方法。我也将它返回到查看页面。如何在html中使用剃须刀迭代列表变量

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

return View("FormResults"); 

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

回答

3

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

@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. 
     }   
    } 
+0

太棒了。感谢您的发布。它工作正常。 – Vib 2014-12-10 06:49:36

5

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

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

+0

我不使用模型。我从我的控制器调用服务并将其存储在一个变量中。我也将我的数据传递给视图。我为我的服务有一个单独的项目。其实我不确定我是否做得对。请帮我 – Vib 2014-12-09 13:10:47

+0

考虑我在project1中有我的服务方法Jumbo(),并且我从project2中调用了该方法。我在project1中有一个名为UserTable的列表。我从数据库中检索数据并将其存储在该列表中(project1)。从我的project2中,我只需调用该方法并将其存储到一个变量中。我如何将这个列表包含到project2中的View中?请帮助我... – Vib 2014-12-09 13:32:26

+0

@ user3627446如果'UserTable'是类名,那么将'Foo'从该答案更改为'UserTable',并将'item.Text'更改为正确的属性名,即item.FirstName。 – ekad 2014-12-09 13:34:43

2

您认为写一个foreach循环,如下

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