2013-08-23 167 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

相关问题