【问题标题】:ASP.NET MVC delete function doesnt return to listASP.NET MVC 删除函数不返回列表
【发布时间】:2019-12-12 08:23:51
【问题描述】:

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

找不到此本地主机页面。 没有找到该网址的网页: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# html asp.net asp.net-mvc model-view-controller


    【解决方案1】:

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

    https://localhost:44384/RaidRequests/IndexAsync
    

    而不是

    https://localhost:44384/RaidRequests/Index
    

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

    return RedirectToAction("Index");
    

    【讨论】:

    • 您能否解释一下您是如何发现操作名称为Index 的?我问这个是因为我没有看到IndexAsync 方法的任何属性,也没有在OP 的问题中看到任何调用Index 的方法。我刚刚发现 OP 提到了 我的索引看起来像这样,但它也可能是 IndexAsync 的缩写。我只是好奇,我错过了什么吗?
    • 这行得通,我想当我尝试这个时,我只是忘记在索引中添加“”。谢谢,现在我觉得有点愚蠢:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多