首页 > 解决方案 > 在视图中显示来自不同表的数据

问题描述

只是想问一下我是否在这里错过了什么。无论如何,我有两个表,我使用.NET MVC btw 在我的控制器中连接在一起,这是我的控制器:

namespace Review.Controllers
{
    public class ReviewController : Controller
    {
        ReviewContext db = new ReviewContext();
        ReviewItemsContext db2 = new ReviewItemsContext();
        MainDataModel db3 = new MainDataModel();

        List<UAR_Review> uar_review = new List<UAR_Review>();
        List<UAR_ReviewItems> uar_reviewitems = new List<UAR_ReviewItems>();


        public ActionResult Index(int? page) {

            ViewBag.AccList = (from r in db2.UAR_ReviewItems
                               select r.Account).Distinct();

            /*var entities = from s in db2.UAR_ReviewItems
                            orderby s.Account
                            select s;*/

            var entities = from s in uar_review
                           join st in uar_reviewitems on s.ID equals st.ReviewID into st2
                           from st in st2.DefaultIfEmpty()
                           select new MainDataModel { UAR_Review = s, UAR_ReviewItems = st };


            int pageSize = 15;
            int pageNumber = (page ?? 1);
            return View(entities.ToPagedList(pageNumber, pageSize));
        }
    }
}

这是我的观点:

@model PagedList.IPagedList<Review.Models.MainDataModel>
@using PagedList.Mvc;

<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" />

@{
    ViewBag.Title = "Index";
}


@using (Html.BeginForm("Index", "Review", FormMethod.Get))
{
    <h2>Index</h2>

    @section NavBar{

        <h3>Period: 2 of 2018</h3>

        @Html.DropDownList("userAccount", new SelectList(ViewBag.AccList), "Select Account to Filter")
        <input type="submit" value="Search" />    
        }

    @section MiddleSection{

        <table class="table">
            <tr>
                <th>
                    <span class="arrow-link contrast-large light-blue">@Html.DisplayName("Name")</span>
                </th>
                <th>
                    <span class="arrow-link contrast-large light-blue">@Html.DisplayName("Role")</span>
                </th>
                <th>
                    <span class="arrow-link contrast-large light-blue">@Html.DisplayName("Action")</span>

                </th>
            </tr>

            @foreach (var item in Model)
            {

                <tr>
                    <td>
                       <span class="font-gotham-narrow">@item.UAR_Review.DisplayName</span>
                    </td>
                    <td>
                       <span class="font-gotham-narrow">@item.UAR_ReviewItems.Role</span>
                    </td>
                    <td>
                        @Html.HiddenFor(modelItem => item.UAR_ReviewItems.Response)
                        <span class="font-gotham-narrow">
                            @Html.RadioButton("Response", "Retain")@Html.Label("Retain")&emsp;
                        </span>
                        <span class="font-gotham-narrow">
                            @Html.RadioButton("Response", "Remove")@Html.Label("Remove")
                        </span>
                    </td>
                </tr>
            }
        </table>
        <br />
        Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount

        @Html.PagedListPager(Model, page => Url.Action("Index",
            new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))

        }
    }
}

问题是,当我运行它时,站点中没有显示任何内容。这是页面。

我只是想问问有没有我遗漏的东西。另外,请忽略左侧的下拉列表,我一直计划使用它来按 AccountType 对页面中显示的元素进行排序(这存储在我的 UAR_ReviewItems 表中)。现在,我只是想弄清楚这里出了什么问题以及为什么没有显示任何元素。

标签: c#asp.net.netrazormodel-view-controller

解决方案


您的屏幕抓取确实显示 PageCount 为 0。您的模型为空。检查您的查询。


推荐阅读