首页 > 解决方案 > ASP.NET MVC 删除函数不返回列表

问题描述

从列表中删除项目后,我的控制器没有返回列表,在浏览器中它会引发此错误

找不到此本地主机页面。未找到该网址的网页:https://localhost:44384/RaidRequests/IndexAsync

这开始了,然后我添加了分页,我处理了我的视图的所有其他问题,但删除不起作用。

这是我的控制器中的删除功能:

public async Task<IActionResult> DeleteConfirmed(int? id)
    {
        var raidRequest = await _context.RaidRequest.FindAsync(id);
        _context.RaidRequest.Remove(raidRequest);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(IndexAsync));
    }

我的索引如下所示:

public async Task<ViewResult> IndexAsync(string sortOrder, string currentFilter, string searchString, int? page)
    {
        ViewBag.CurrentSort = sortOrder;
        ViewBag.NameSurnameSortParm = sortOrder == "NameSurname" ? "NameSurname_desc" : "NameSurname";
        ViewBag.ReasonSortParm = sortOrder == "Reason" ? "Reason_desc" : "Reason";
        ViewBag.AccessSortParm = sortOrder == "Access" ? "Access_desc" : "Access";
        ViewBag.UserOrAdminSortParm = sortOrder == "UserOrAdmin" ? "UserOrAdmin_desc" : "UserOrAdmin";
        ViewBag.DepartmentSortParm = sortOrder == "Department" ? "Department_desc" : "Department";
        ViewBag.UNCPathSortParm = sortOrder == "UNCPath" ? "UNCPath_desc" : "UNCPath";

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

        ViewBag.CurrentFilter = searchString;

        var request = from c in _context.RaidRequest
                      select c;
        if (!String.IsNullOrEmpty(searchString))
        {
            request = request.Where(s => s.NameSurname.Contains(searchString));
        }
        request = sortOrder switch
        {
            "NameSurname_desc" => request.OrderByDescending(c => c.NameSurname),
            "Reason" => request.OrderBy(c => c.Reason),
            "Reason_desc" => request.OrderByDescending(c => c.Reason),
            "Access" => request.OrderBy(c => c.Access),
            "Access_desc" => request.OrderByDescending(c => c.Access),
            "UserOrAdmin" => request.OrderBy(c => c.UserOrAdmin),
            "UserOrAdmin_desc" => request.OrderByDescending(c => c.UserOrAdmin),
            "Department" => request.OrderBy(c => c.Department),
            "Department_desc" => request.OrderByDescending(c => c.Department),
            "UNCPath" => request.OrderBy(c => c.UNCPath),
            "UNCPath_desc" => request.OrderByDescending(c => c.UNCPath),
            _ => request.OrderBy(c => c.Id),
        };
        int pageSize = 10;
        int pageNumber = (page ?? 1);
        return View(await PaginatedList<RaidRequest>.CreateAsync(request, page ?? 1, pageSize)); 
    }

我认为问题出在退货部分。我需要在那里写什么才能成功返回列表?

标签: c#htmlasp.netasp.net-mvcmodel-view-controller

解决方案


动作名称是Index。该错误抱怨该 URL 是:

https://localhost:44384/RaidRequests/IndexAsync

代替

https://localhost:44384/RaidRequests/Index

那是因为nameof(IndexAsync)返回IndexAsync而不是Index. 返回语句应该是:

return RedirectToAction("Index");

推荐阅读