2017-03-12 58 views
0

我刚刚开始使用ASP.NET,并通过大量来自YouTube和Google的教程进行了培训,我可以找到它们。ASP.NET:无法在视图中显示来自视图模型的数据

但我似乎无法找到解决方案。

我的目的是将客户的表格视图生成到表格中,使用viewmodel将其列为c1和c2。

我的视图模型代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using Alpha.Models; 

namespace Alpha.ViewModels 
{ 
    public class ListCustomersViewModel 
    { 
     public List<Customer> Customers { get; set; } 
    } 
} 

我的控制器代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using Alpha.Models; 
using Alpha.ViewModels; 


namespace Alpha.Controllers 
{ 
    public class CustomersController : Controller 
    { 
     // GET: Customers/ListCustomer 
     public ActionResult ListCustomers() 
     { 
      var customers = new List<Customer> 
      { 
       new Customer { Name = "C1" , Id = 1}, 
       new Customer { Name = "C2" , Id = 2} 
      }; 
      var viewModel = new ListCustomersViewModel 
      { 
       Customers = customers 
      }; 
      return View(viewModel); 
     } 
    } 
} 

我的视图代码:

@model Alpha.ViewModels.ListCustomersViewModel 
@{ 
    ViewBag.Title = "ListCustomers"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<h1>Customers</h1> 

<div class="container"> 
    <table class="table"> 
     <thread> 
      <tr> 
       <th>Customer</th> 
      </tr> 
     </thread> 
     <tbody> 
      <tr> 
       <td>*I DONT KNOW WHAT I SHOULD TYPE HERE TO PASS THE INFORMATION IN (C1)</td> 
       <td>*I DONT KNOW WHAT I SHOULD TYPE HERE TO PASS THE INFORMATION IN (C2)</td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

我真的希望有人能够给我这件事情上的指南。谢谢。

+0

你怎么在上面发布的代码荣?什么不工作? – pijemcolu

+1

@pijemcolu问题标题是错误的。 OP知道如何将数据发送到视图,但他不知道如何在视图内呈现数据; o) –

+0

@pijemcolu 对不起,我的坏它不够清楚,问题是在查看部分 “​​*我不知道我应该在这里输入要通过IN(C1)信息 ​​*我不知道我应该在这里输入要通过IN(C2)“ – Qiang

回答

2

您需要循环模型和提取信息,以建表

<tbody> 
@foreach (var item in Model.Customers) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Id) 
     </td> 
    </tr> 
} 
</tbody> 
+0

谢谢!它的工作原理=) – Qiang

0

在针对第一次使用@model IEnumerable<Class that you are using> 那么您可以在使用表

<tbody> 
     @foreach (Customer cust in Model) 
     { 
     <tr> 
      <td>@Html.DisplayFor(modelItem => cust.Name)</td> 
     </tr> 
     } 
    </tbody> 

Here你可以找到如何与.net一起工作。

+0

视图的模型类型为ListCustomersViewModel。但有可能为IEnumerable有一个DisplayTemplate ; o) –

+0

@SirRufo是的你是对的,但ListCustomersViewModel在这里是不必要的。 :) –

+0

你怎么知道这是不必要的?你知道整个项目吗?如果是这样,那么你可能是对的 –

0

您的ViewModel包含一个List这意味着它包含多个实体,所以基本上它不如将类传递给您的模型那样容易。从列表中提取数据,你需要使用loop,这里正如其他人解释,你可以使用foreach来显示数据:

<tbody> 
@foreach (var item in Model.Customers) 
{ 
    <tr> 
     <td> 
      //one way to show the data 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
     <td> 
      //or you can simple call the item object and declare the property you want to show 
      @item.Id 
     </td> 
    </tr> 
} 
</tbody> 
+0

谢谢!它的工作原理=) – Qiang

+0

@强庆幸它做到了:) – Valkyrie

相关问题