如何实现一个MVC模型;t直接链接到数据库

本文关键字:链接 数据库 模型 一个 何实现 实现 MVC | 更新日期: 2023-09-27 18:00:15

我正在尝试实现一个视图,该视图显示在显示之前已修改的数据库中的信息。例如,我试图添加加成的劳动力和硬件成本,以给出最终价格。问题是我不能使用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>
}

如何实现一个MVC模型;t直接链接到数据库

您的模型设计不正确,无法实现您想要实现的目标。

您应该创建一个如下所示的视图模型:

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)。