我在使用视图模型查看视图中选择的项目的详细信息时遇到了问题。我正在将结果加载到索引视图中,如下所示
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));
}这正如期而至。当我想访问所列结果之一的详细信息时,问题就出现了。
我在控制器中尝试了以下几点:
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“不存在
发布于 2022-09-22 14:05:14
不能回答这个问题,因为我不知道是什么问题,但我撤销了数据库,它现在正在工作。
https://stackoverflow.com/questions/73804727
复制相似问题