2013-08-23 165 views
2

我有這樣MVC 3:在一個視圖中顯示視圖模型項目

  public class AmeInvoice 
       { 
        public DateTime invoiceDate { get; set; } 
        public string invoiceNumber { get; set; } 
        public string accountNumber { get; set; } 
        public double amount { get; set; } 
        public double amountDue { get; set; } 
       } 

我有這樣

  public class AmeInvoiceViewModel 
       { 
        public List<AmeInvoice> ppInvoices { get; set; } 
        public double otherAmount { get; set; } 
        public double totalDue { get; set; } 
       } 

我的行動結果在我的控制方法的視圖模型一類是像這樣

  public actionresult index() 
      { 
       .... 
       .... 
       .... 
       List<AmeInvoice> prideInvoices = new List<AmeInvoice>(); 

           while (reader.Read()) 
           { 
            prideInvoices.Add(new AmeInvoice() 
            { 
             invoiceDate = Convert.ToDateTime(reader["invoicedate"]), 
             invoiceNumber = reader["invoicenumber"].ToString(), 
             accountNumber = reader["account"].ToString(), 
             amount = Convert.ToDouble(reader["amount"]), 
             amountDue = Convert.ToDouble(reader["amountdue"]) 
            }); 

           } 

       var myviewModel = new AmeInvoiceViewModel(); 
           myviewModel.ppInvoices = prideInvoices; 
           myviewModel.otherAmount = 20.20; 
           myviewModel.totalDue = 30.20; 
           return View(myviewModel); 

      } 

在我看來,我有這個

  @model List<InSCmm.Web.Model.AmeInvoiceViewModel> 

      @{ 
       ViewBag.Title = "Index"; 
      } 

      <h2>Index</h2> 

      <table> 

      @foreach (InSCmm.Web.Model.AmeInvoiceViewModel objUser in Model) 
      { 
       <tr> 
        <td>@objUser.</td> 
        <td>@objUser.</td> 
        <td>@objUser.</td> 
        <td>@objUser.</td> 
        <td>@objUser.</td> 
       </tr> 
      } 
      </table> 

我的問題:我對Mvc非常陌生,我希望能夠在我的視圖中的表格中顯示發票日期,發票編號,帳戶編號,金額,金額。 目前,如果我做objUser。 (我沒有得到這些領域) 請協助。這是正確的道路嗎?

回答

2

你的觀點必須被強類型到您傳遞,而不是一個列表視圖模型:

@model InSCmm.Web.Model.AmeInvoiceViewModel 

然後:

<table> 
    @foreach (var objUser in Model.ppInvoices) 
    { 
     <tr> 
      <td>@objUser.invoiceDate</td> 
      <td>@objUser.invoiceNumber</td> 
      <td>@objUser.accountNumber</td> 
      <td>@objUser.amount</td> 
      <td>@objUser.amountDue</td> 
     </tr> 
    } 
</table> 

<div> 
    Total due: @Html.DisplayFor(x => x.totalDue) 
</div> 
+0

謝謝。此聲明不起作用Total due:@ Html.DisplayFor(x => x.totalDue)。我無法訪問totalDue。 – user2320476

2

您的看法是一個單一的實體,而不是IEnumerable<AmeInvoiceViewModel>,因此通過Model(這是一個單一的AmeInvoiceViewModel)迭代將不起作用。

我認爲您正在尋找Model.ppInvoices,但您需要遍歷AmeInvoice而不是AmeInvoiceViewModel。是這樣的:

<table> 
@foreach (AmeInvoice invoice in Model.ppInvoices) 
{ 
    <tr> 
     <td>@html.DisplayFor(x => invoice.invoiceDate)</td> 
     <td>@Html.DisplayFor(x => invoice.invoiceNumber)</td> 
     <td>@Html.DisplayFor(x => invoice.accountNumber)</td> 
     @* ... *@ 
    </tr> 
} 
</table> 
+0

沒有運氣呢。這就是我得到的。方法'System.Web.Mvc.Html.DisplayExtensions.DisplayFor 的類型參數> (System.Web.Mvc.HtmlHelper ,System.Linq.Expressions.Expression > )' 不能從使用推斷。嘗試明確指定類型參數。 – user2320476

相關問題