【问题标题】:Displaying Data from different tables in View在视图中显示来自不同表的数据
【发布时间】:2018-07-31 06:59:59
【问题描述】:

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

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

        }
    }
}

问题是,当我运行它时,站点中没有显示任何内容。here's the page.

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

【问题讨论】:

  • 您是否尝试在返回实体之前在代码中放置断点以检查其中是否有数据?
  • 您没有从数据库数据中设置 uar_review 和 uar_reviewitems。
  • @Saadi 你是什么意思? UAR_Review 和 UAR_ReviewItems 在我的 SQL 数据库中已有内容。
  • @mahlatse 我做了,当我试图在即时窗口中检查“实体”的内容时,它是这样说的:{System.Linq.Enumerable.d__23f__AnonymousType6 >, Review.Models.UAR_ReviewItems, Review.Models.MainDataModel>} 结果视图:展开结果视图将枚举 IEnumerable
  • 尝试展开结果,看看是否有任何数据

标签: c# asp.net .net razor model-view-controller


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2013-01-19
    相关资源
    最近更新 更多