首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心MVC :使用视图模型获取细节

ASP.NET核心MVC :使用视图模型获取细节
EN

Stack Overflow用户
提问于 2022-09-21 17:21:51
回答 1查看 47关注 0票数 0

我在使用视图模型查看视图中选择的项目的详细信息时遇到了问题。我正在将结果加载到索引视图中,如下所示

代码语言:javascript
复制
public async Task<IActionResult> Index(string sortOrder, string currentFilter, string searchString, int? page)
{
    ViewBag.CurrentSort = sortOrder;
    ViewBag.ConOrgSortParm = String.IsNullOrEmpty(sortOrder) ? "Client_desc" : "Client";
    ViewBag.AssignedSortParm = String.IsNullOrEmpty(sortOrder) ? "Assigned_desc" : "Assigned";
    ViewBag.ExpiresSortParm = String.IsNullOrEmpty(sortOrder) ? "Expires_desc" : "Expires";
    ViewBag.LastActiveSortParm = String.IsNullOrEmpty(sortOrder) ? "LastActive_desc" : "LastActive";
    ViewBag.IDSortParm = String.IsNullOrEmpty(sortOrder) ? "Id_desc" : "";

    if (searchString != null)
    {
        page = 1;
    }
    else
    {
        searchString = currentFilter;
    }

    ViewBag.CurrentFilter = searchString;

    var results = (from node in _context.Nodes
                   join bnbridge in _context.BundleNodes on node.Id equals bnbridge.NodeId into NodeBundleIDGroup
                   from ax in NodeBundleIDGroup.DefaultIfEmpty()
                   join bundle in _context.Bundles on ax.BundleId equals bundle.Id into NodeBundleGroup
                   from bx in NodeBundleGroup.DefaultIfEmpty()
                   join agreement in _context.Agreements on bx.AgreementId equals agreement.Id into agGroup
                   from cx in agGroup.DefaultIfEmpty()
                   join org in _context.Organizations on cx.OrgId equals org.Id into oGroup
                   from ex in oGroup.DefaultIfEmpty()
                   join conorg in _context.Organizations on node.OrgId equals conorg.Id into tGroup
                   from fx in tGroup.DefaultIfEmpty()
                   select new NodeIndexViewModel
                     {
                         Id = node.Id,
                         Name = node.Name,
                         AssignedOrg = fx.ShortName,
                         ContractingOrg = ex.ShortName,
                         Expiry = bx.EndUtc,
                         LastActive = node.ActiveDate,
                         NodeType = bx.NodeTypeID
                     });

    if (!String.IsNullOrEmpty(searchString))
    {
        results = results.Where(s => s.AssignedOrg.Contains(searchString)
                                        || s.Id.ToString().StartsWith(searchString));
    }

    switch (sortOrder)
    {
        case "Client_desc":
            results = results.OrderByDescending(s => s.ContractingOrg);
            break;

        case "Client":
            results = results.OrderBy(s => s.ContractingOrg);
            break;

        case "Assigned":
            results = results.OrderBy(s => s.AssignedOrg);
            break;

        case "Assigned_desc":
            results = results.OrderByDescending(s => s.AssignedOrg);
            break;

        case "Expires":
            results = results.OrderBy(s => s.Expiry);
            break;

        case "Expires_desc":
            results = results.OrderByDescending(s => s.Expiry);
            break;

        case "LastActive":
            results = results.OrderBy(s => s.LastActive);
            break;

        case "LastActive_desc":
            results = results.OrderByDescending(s => s.LastActive);
            break;

        case "Id_desc":
            results = results.OrderByDescending(s => s.Id);
            break;

        default:
            results = results.OrderBy(s => s.Id);
            break;
    };

    int pageSize = 10;
    int pageNumber = (page ?? 1);

    return View(await results.ToPagedListAsync(pageNumber, pageSize));
}

这正如期而至。当我想访问所列结果之一的详细信息时,问题就出现了。

我在控制器中尝试了以下几点:

代码语言:javascript
复制
public async Task<IActionResult> Details(int? id)
{
    if (id == null || _context.NodeIndexViewModel == null)
    {
        return NotFound();
    }

    var nodeIndexViewModel = await _context.NodeIndexViewModel
                                           .FirstOrDefaultAsync(m => m.Id == id);

    if (nodeIndexViewModel == null)
    {
        return NotFound();
    }

    return View(nodeIndexViewModel);
}

我犯了个错误

PostgresException: 42P01:关系"NodeIndexViewModel“不存在

EN

回答 1

Stack Overflow用户

发布于 2022-09-22 14:05:14

不能回答这个问题,因为我不知道是什么问题,但我撤销了数据库,它现在正在工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73804727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档