【发布时间】:2017-02-27 22:00:31
【问题描述】:
我创建了一个.Net Core Web API 程序。我想向它添加一个视图。在同一个项目下,我添加了一个“视图”文件夹。在我路由所有 API 请求的 HomeController 中,我创建了以下内容:
[HttpGet("view")]
public IActionResult Index()
{
return View();
}
在我的 Views 文件夹中,我创建了一个文件夹“Home”并向其中添加了“Index.cshtml”。
当我启动 API 并导航到“../view”时,我到达 return View(); 行,但随后它返回 500 Internal Server Error。
这是我不喜欢 MVC 约定的“自动”方法的地方。如果约定不起作用,我不知道在哪里将视图链接到控制器。
更新,这可能应该是我的第一个行动方案。 我在 Controllers 文件夹中添加了一个新类,并在 VS2015 中使用了 MVC Controller 模板。然后我添加了一个视图来匹配,它仍然不能自动工作。
所以为了清楚起见,我的项目是:ASP.NET Core Web Application(.NET Core) 和 Web API 模板。我有一个“作业”控制器类,它在开始时添加为“值”,然后我重命名了。然后我添加了一个名为“HomeController”的MVC Controller Class,唯一的方法是“Index”。我添加了一个名为“Views”的文件夹和一个名为“Home”的子文件夹,并添加了一个名为“Index.cshtml”的MVC View Page。
我尝试使用“return View();”在 Index 方法中,没有用。然后我尝试在 Index 方法上方添加 [Route("Home/Index")] 。无论哪种方式,该 URL 都会让我到达“return View();”处的断点。但它永远不会返回视图。
【问题讨论】:
-
“自动”方法稍难学习,但好处是您需要维护的代码要少得多,因为应用程序是由约定驱动的。我不确定这是否确实适用于 .NET 核心,但在以前的版本中,您永远不会从 WebAPI 控制器返回视图 - 视图严格用于 MVC。 WebAPI 期望您返回某种数据结构,最终将 XML 或 JSON 生成给消费应用程序,而不是视图。
-
@NightOwl888 我明白,我知道我不应该那样做,如果你阅读我的更新,你会看到我添加了一个 MVC 控制器,但它仍然无法工作。跨度>
-
你能显示你的 index.cshtml 的内容吗?
-
看我的回答,别忘了控制器上的[Route("")]
-
您应该实现异常日志记录以了解您的应用程序发生了哪些异常;)
标签: c# asp.net-mvc asp.net-core .net-core