【问题标题】:ASP.NET Core Access Files inside subfolders子文件夹内的 ASP.NET Core 访问文件
【发布时间】:2021-11-08 20:38:24
【问题描述】:
我正在使用带有 VSCode 的 ASP.NET。我是 ASP 新手,这是我的第一个项目。我创建了项目并创建了一个名为 admin 的文件夹,其中包含一个 index.cshtml 文件。但是当我尝试通过键入localhost:5000/admin/、localhost:5000/admin/index 和localhost:5000/admin/index.cshtml 在浏览器中访问文件时,这些 URL 都没有显示网页。相反,浏览器显示在 localhost:5000 中找不到 URL。
我试图通过谷歌搜索找到解决方案,但一无所获。我还不想跳入 MVC,因为我从未使用过它。
PS:请不要以“这个问题需要更多研究”为由将其删除。我是一个初学者,并且已经解释了我可以拥有什么。
【问题讨论】:
标签:
asp.net
asp.net-mvc
asp.net-core
asp.net-web-api
【解决方案1】:
Asp.net MVC 框架的工作方式是:
- 请求首先进入一个动作而不是一个视图(例如
index.cshtml)。当然在那之前发生了很多事情
- 文件夹名称默认映射到现有控制器的名称。所以你需要有一个名为
AdminController 的控制器,它必须从 Microsoft.AspNetCore.Mvc.Controller 继承
- 在
admincontroller 控制器中,您需要有一个名为Index 的操作
- 那么您的
index.cshtml 需要放在/Views/Admin/index.cshtml 位置或/Views/Shared/index.cshtml 位置
之后,当您点击 URL localhost:5000/admin/index 时,请求将转到 AdminController 控制器中名为 Index 的操作。动作方法的最后一行通常是return View();,它将查找与动作名称匹配的 cshtml 页面。在这种情况下是Index。因此它将开始寻找index.cshtml 文件。如果找到它,它将以这种方式呈现您的 index.cshtml 视图。
这里是一个简单的控制器和动作:
public class AdminController : Controller
{
public AdminController()
{
}
public IActionResult Index()
{
return View();
}
}
【解决方案2】:
常规路由通常与控制器和视图一起使用。您必须在正确的位置创建视图。通常,如果要为控制器操作返回视图,则需要在 Views 文件夹中创建一个子文件夹,其中与您的控制器同名。在子文件夹中,您必须创建一个与控制器操作同名的视图。
可以参考doc了解什么是mvc。
如果您使用的是 ASP.NET,您可以尝试在 Controllers 文件夹中创建一个 AdminController,如下所示:
public class AdminController : Controller
{
public ActionResult Index()
{
return View();
}
}
如果您使用的是 ASP.NET Core MVC,您可以尝试在 Controllers 文件夹中创建一个 AdminController,如下所示:
public class AdminController : Controller
{
public IActionResult Index()
{
return View();
}
}