C# 视图';编辑';或者找不到其主节点,或者没有视图引擎支持搜索的位置

C# 视图';编辑';或者找不到其主节点,或者没有视图引擎支持搜索的位置,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我想编辑博客。我在BlogAdmin文件夹的视图文件夹中编辑视图 <a href="/BlogAdmin/Edit/@item.id" class=" btn btn-sm btn-primary float-right"> Edit </a> 控制器: public ActionResult Edit(int? id) { if (id == null) { return Htt

我想编辑博客。我在BlogAdmin文件夹的视图文件夹中编辑视图

 <a  href="/BlogAdmin/Edit/@item.id" class=" btn btn-sm btn-primary float-right"> Edit </a>  

控制器:

  public ActionResult Edit(int? id)
         {
        if (id == null)
        {
            return HttpNotFound();
        }
        List<Blog> EditBg = db.Blogs.Where(i => i.id==id).ToList();
        if (EditBg== null)
        {
            return HttpNotFound();
        }
        var vm = new VmBlog
        {
            blogcatg = db.BlogCategories.ToList(),
            Blog = db.Blogs.Where(i => i.id == id).ToList(),
            Content=db.Blogs.FirstOrDefault(i=>i.id==id).posttext

        };

        return View(vm);

    }
public ActionResult编辑(int?id)
{
if(id==null)
{
返回HttpNotFound();
}
列出EditBg=db.Blogs.Where(i=>i.id==id.ToList();
if(EditBg==null)
{
返回HttpNotFound();
}
var vm=新的VmBlog
{
blogcatg=db.BlogCategories.ToList(),
Blog=db.Blogs.Where(i=>i.id==id).ToList(),
Content=db.Blogs.FirstOrDefault(i=>i.id==id).posttext
};
返回视图(vm);
}
Get方法正在工作。这里没有错误:

一切似乎都是正确的。但我得到了这个错误:

未找到视图“编辑”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下地点:

~/Views/BlogAdmin/Edit.aspx

~/Views/BlogAdmin/Edit.ascx

~/Views/Shared/Edit.aspx

~/Views/Shared/Edit.ascx

~/Views/BlogAdmin/Edit.cshtml

~/Views/BlogAdmin/Edit.vbhtml

~/Views/Shared/Edit.cshtml

~/Views/Shared/Edit.vbhtml

为什么会发生错误?

检查,特别是关于

如果使用return View()隐式返回ViewResult,则无所谓;或者使用返回视图(“”;显式地将视图名称传递给视图方法;。在这两种情况下,视图发现都会按以下顺序搜索匹配的视图文件:

视图/[ControllerName]/[ViewName].cshtml

视图/Shared/[ViewName].cshtml

您的文件夹结构似乎没有考虑指定的视图发现

如果要更改文件夹结构并查看发现

您可以使用自定义设置自定义视图在应用程序中的定位方式的默认约定

关于这一点,可以找到一个很好的答案

在MVC模式中,默认路由将控制器放入“/controllers”处的文件夹中。视图存储在文件夹“/Views/{ControllerBaseName}/{ActionName}”中

默认文件夹结构(路由)应如下所示(标记为c,因此假设为c扩展):

/控制器/BlogAdminController.cs


/Views/BlogAdmin/Edit.cshtml

您确定您的视图没有丢失吗?是的。我的编辑视图与控制器位于同一文件夹中。谢谢您的回答。但是编辑视图位于BlogAdmin文件夹中的同一文件夹中。如果它与控制器位于同一文件夹中,那么引擎找不到它是有意义的。所以我应该做的是你在回答中所说的?是的。您需要迁移视图,或者实现IViewLocationExpander。我会选择第一个更简单的解决方案。我想我没有正确地提出这个问题。我在BlogAdmin文件夹的视图文件夹中编辑视图。当我将
更改为
时,它会找到编辑视图。我想我没有正确地提问。我在BlogAdmin文件夹的视图文件夹中编辑视图。当我将
更改为
时,它会找到“编辑”视图。您是否可以在浏览器中检查视图链接生成的HTML?里面有什么?@item.id是否正确替换为数字?与此代码一起使用
。这就是剃须刀语法。