2015-10-06 72 views
1

我是MVC的新手,并希望以表格形式在视图中显示来自两个模型的数据。 这是我的客户模型:如何使用视图模型来显示表中的数据

public class Customer 


     { 
      public int CustomerID { get; set; } 

      [Display(Name = "First Name")] 

      public string CustomerFirstName { get; set; } 

       [Display(Name = "Last Name")] 
      public string CustomerLastName { get; set; } 

      [Column(TypeName = "VARCHAR")] 
      [StringLength(50)] 
      [Display(Name = "Email")] 
      public string CustomerEmail { get; set; } 

      [Column(TypeName = "VARCHAR")] 
      [StringLength(50)] 
      [Display(Name = "Street")] 
      public string CustomerAddress1 { get; set; } 

      [Column(TypeName = "VARCHAR")] 
      [StringLength(50)] 
      [Display(Name = "Suburb")] 
      public string CustomerAddress2 { get; set; } 

      [Column(TypeName = "VARCHAR")] 
      [StringLength(50)] 
      [Display(Name = "City")] 
      public string CustomerAddress3 { get; set; } 

      [Column(TypeName = "VARCHAR")] 
      [StringLength(50)] 
      [Display(Name = "Postal code")] 
      public string PostalCode { get; set; } 

      [Column(TypeName = "VARCHAR")] 
      [StringLength(10)] 
      [Display(Name = "Cellphone Number")] 
      public string CustomerCell { get; set; } 

      [Display(Name = "Customer Name")] 
      public string FullName 
      { 
       get { return CustomerFirstName + " " + CustomerLastName; } 
      } 

      public virtual ICollection<Purchase> Purchases { get; set; } 
     } 
    } 

这是我的租用模式:

public class Hire 
    { 
     public int HireID { get; set; } 

     [Display(Name = "Equipment type")] 
     public int EquipmentID { get; set; } 
     public int PurchaseID { get; set; } 

     [DataType(DataType.Date)] 
     [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
     [Display(Name = "Returned date")] 
     public DateTime? ReturnedDate { get; set; } 

     public virtual Purchase Purchases { get; set; } 
     public virtual Equipment Equipments { get; set; } 
    } 

这是我的ViewModel:

public class Custhire 



    { 

      public string CustomerFirstName { get; set; } 


      public string CustomerLastName { get; set; } 


      public string CustomerEmail { get; set; } 

      public string CustomerCell { get; set; } 

      public int HireID { get; set; } 

      public DateTime? ReturnedDate { get; set; } 


     } 

这是我的控制器,我用它来传递视图模型查看:

 public ActionResult Table() 
      { 
       Custhire model = new Custhire(); 
       return View(model); 
      } 

这是我的看法:

@model IEnumerable<FCproject.ViewModel.Custhire> 

@{ 
    ViewBag.Title = "Table"; 
} 

<h2>Table</h2> 

<table class="table table-condensed" 
    <thead> 
     <tr> 
      <th>CustomerID</th> 
      <th>Equipment</th> 
      <th>Retrned date</th> 
      <th></th> 
      <th></th> 
     </tr> 
    </thead> 
    <body> 
     @foreach (var item in ViewModel.Custhire) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(m => item.CustomerFirstName) 
       </td> 
       <td> 
        @Html.DisplayFor(m => item.CustomerLastName) 
       </td> 
       <td> 
        @Html.DisplayFor(m => item.CustomerEmail) 
       </td> 
       <td> 
        @Html.DisplayFor(m => item.CustomerCell) 
       </td> 
       <td> 
        @Html.DisplayFor(m => item.HireID) 
       </td> 
       <td> 
        @Html.DisplayFor(m => item.ReturnedDate) 
       </td> 

      </tr> 
     } 
    </body> 
    <tr> 
</table> 
在我看来

,我@foreach说:ViewModel不会在目前情况下存在

+2

它必须是'@foreach(以型号VAR项)' –

+1

但是你不出席澳的反正出了正确的控制器方法 - 你显示的那个返回一个'Custhire'对象,但是你的视图是'@model IEnumerable '这会引发异常。 –

+0

我如何将多个Custhire传递给视图? –

回答

1

有几件事情要检查 -

你必须绑定你的观点与 -

IEnumerable<FCproject.ViewModel.Custhire> 

而您提供的Controller片段返回单个Custhire对象。这实际上应该返回Custhire东西的IEnumerable例如像 -

public ActionResult Table() 
    { 
     List<Custhire> model = new List<Custhire>(); 

     //keep adding the "Custhire" to the collection 
     //as per your requirement 
     model.Add(new Custhire()); 

     return View(model); 
    } 

其次,你需要更换,

@foreach (var item in ViewModel.Custhire) 

与此

@foreach (var item in Model) 

Model本身含有Custhire的集合。

+0

是的,这是正确的答案 – Hiba

0

当您创建视图,确保为strongly typed

enter image description here

相关问题