我正在尝试实现一个视图,该视图显示在显示之前已修改的数据库中的信息。例如,我正在尝试添加标记人工和硬件成本以给出最终价格。问题是我无法使用foreach循环在视图中显示它,因为它是List
,我无法将其声明为IEnumerable
,因为它不会让我使用Add()
功能。这是我的模特,
namespace Myname.Models{
using System;
using System.Collections.Generic;
public partial class Pricing
{
public List<int> ID { get; set; }
public List<string> Manufac { get; set; }
public List<string> Model { get; set; }
public List<string> Service { get; set; }
public List<string> Type { get; set; }
public List<int> Price { get; set; }
}
这是我的控制器中的索引方法,
private WTEntities db = new WTEntities();
// GET: /JobInformation/
[Authorize(Roles = "Employee")]
public ActionResult Index()
{
Pricing prices = new Pricing();
prices.ID = new List<int>();
prices.Manufac = new List<string>();
prices.Model = new List<string>();
prices.Price = new List<int>();
prices.Service = new List<string>();
foreach(var item in db.JobInformations)
{
prices.ID.Add(item.ID);
prices.Manufac.Add(item.Manufac);
prices.Model.Add(item.Model);
prices.Service.Add(item.Service);
prices.Price.Add(((int)item.MarkupCostCents + (int)item.LaborCostCents + (int)item.HardwareCostCents) / 100);
}
return View(prices);
}
这是我的观点,
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Type)
</td>
<td>
@Html.DisplayFor(modelItem => item.Manufac)
</td>
<td>
@Html.DisplayFor(modelItem => item.Model)
</td>
<td>
@Html.DisplayFor(modelItem => item.Service)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
</tr>
}
答案 0 :(得分:4)
您已根据自己的目标错误地设计了自己的模型。
您应该创建一个如下所示的viewmodel:
public class Pricing
{
public int ID { get; set; }
public string Manufac { get; set; }
public string Model { get; set; }
public string Service { get; set; }
public string Type { get; set; }
public int Price { get; set; }
}
然后在你的控制器中:
var prices = new List<Pricing>();
foreach(var item in db.JobInformations)
{
var price = new Pricing();
price.ID = item.ID;
price.Manufac = item.Manufac;
price.Model = item.Model;
price.Service = item.Service;
price.Price = ((int)item.MarkupCostCents + (int)item.LaborCostCents + (int)item.HardwareCostCents) / 100;
prices.Add( price );
}
return View(prices);
现在在您的视图中,您可以完全按照您已编写的内容执行操作(只需确保将@model声明更改为List)。