如何在一个视图中显示八个LINQ to SQL表中的数据

py49o6xq  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(91)

我是MVC的新手,我试图从8个不同的表中提取数据(每个表中有一条记录,但每个表中的每条记录都有几个字段)。
我读了如何用两个表和连接来做这件事,但是当我试图连接两个以上的表时,我会出错。
每个表的每条记录中都有一个ID字段,这就是我需要查询的内容。
更新:
下面是我的ViewModel:

public class StoreInfoViewModel
    {
        public List<AWS_Ticket> tickets { get; set; }
        public List<AWS_TNF_StepOne> tnf { get; set; }
        public List<AWS_TNF_StepTwo> tnf2 { get; set; }
        public List<AWS_DBU> dbu { get; set; }
        public List<GetStoreInfoResult> storeInfo { get; set; }
    }

字符串
这是我的控制器:

public class StoreInfoController : Controller
    {
        PortalDataContext db = new PortalDataContext();
        //
        // GET: /StoreInfo/
        public ActionResult Index(int id)
        {
            var tickets = db.AWS_Tickets.Where(x => x.Store_Number == id);
            var tnf = db.AWS_TNF_StepOnes.Where(x => x.Store_Number == id);
            var tnf2 = db.AWS_TNF_StepTwos.Where(x => x.Store_Number == id);
            var dbu = db.AWS_DBUs.Where(x => x.StoreNumber == id);
            var storeInfo = db.GetStoreInfo(id);

            StoreInfoViewModel model = new StoreInfoViewModel();
            model.tickets = tickets.ToList();
            model.tnf = tnf.ToList();
            model.tnf2 = tnf2.ToList();
            model.dbu = dbu.ToList();
            model.storeInfo = storeInfo.ToList();

            return View(model);
        }


以下是我的观点:

@model IEnumerable<Team_Portal_v3.Models.StoreInfoViewModel>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<div>
    <table>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    Store Number: @Html.DisplayFor(modelItem => item.storeInfo[0].StoreNum)
                </td>
                <td>&nbsp;</td>
                <td>24 Hour Store? @Html.DisplayFor(modelItem => item.storeInfo[0].Is24Hour)</td>
            </tr>
            <tr>
                <td>
                    City / State: @Html.DisplayFor(modelItem => item.storeInfo[0].City) , @Html.DisplayFor(modelItem => item.storeInfo[0].State)
                </td>
                <td>
                    Store Phone: @Html.DisplayFor(modelItem => item.storeInfo[0].StorePhone)
                </td>
                <td>
                    DBU Installed? @Html.DisplayFor(modelItem => item.storeInfo[0].DBUInstalled)
                </td>
            </tr>
            <tr>
                <td>
                    Owner: @Html.DisplayFor(modelItem => item.storeInfo[0].Owner)
                </td>
                <td>
                    Owner Phone: @Html.DisplayFor(modelItem => item.storeInfo[0].OwnerPhone)
                </td>
                <td>
                    Store Status: @Html.DisplayFor(modelItem => item.storeInfo[0].StoreStatus)
                </td>
            </tr>
            <tr>
                <td>
                    Division: @Html.DisplayFor(modelItem => item.storeInfo[0].Division)
                </td>
                <td>
                    Region: @Html.DisplayFor(modelItem => item.storeInfo[0].Region)
                </td>
                <td>
                    Expected Opening Date: @Html.DisplayFor(modelItem => item.storeInfo[0].OpeningDate)
                </td>
            </tr>
        }
    </table>
</div>


我没有收到任何错误的init运行的应用程序,它当我尝试去索引和数字ID,我得到以下错误:
传递到字典中的模型项的类型为“Team_Portal_v3.Models.StoreInfoViewModel”,但此字典需要类型为“System.Collections.Generic. IEModel”1[Team_Portal_v3.Models.StoreInfoViewModel“的模型项。
我哪里做错了?

6kkfgxo0

6kkfgxo01#

这里的错误消息是非常不言自明的。你传入了一个StoreInfoViewModel,但你的视图需要一个IEnumerable<StoreInfoViewModel>
您的视图需要更新为只需要一个StoreInfoViewModel

@model Team_Portal_v3.Models.StoreInfoViewModel

字符串
或者你需要从你的控制器/动作中传入一个StoreInfoViewModel的列表

tp5buhyn

tp5buhyn2#

我不想成为不受欢迎的人,但是当你跨越3个连接时,你最好使用存储过程。Here is article on how to do it.

相关问题