【问题标题】:InvalidOperationException: The view 'ViewName' was not found after adding routeInvalidOperationException:添加路由后未找到视图“ViewName”
【发布时间】:2017-08-28 14:41:13
【问题描述】:

为我的网络应用设置分页后,我决定更改 url 以使其看起来更好。一切都很完美,直到我决定添加一条路线,在我更改页面后出现以下错误

“InvalidOperationException:未找到视图“书籍”。 搜索了以下位置:/Views/Shared/Books.cshtml"

还有路由

routes.MapRoute
(
     name: "pagination",
     template: "Books/Page/{page}",
     defaults: new {Controller = "Core", action = "Books"}
);

似乎没有任何错字,我已经三次检查控制器和视图是否在正确的路径中并且具有正确的方法。 这里可能有什么问题?它没有在正确的文件夹中搜索视图

【问题讨论】:

  • 为什么您的所有路线都默认为书籍?
  • 你有没有像~/Views/Core/Books.cshtml这样的Views/Core文件夹内的视图?
  • 是的,该视图存在
  • 这个问题缺少正确的minimal reproducible example。另外,这不是路由问题,这是控制器中的问题,因为路由不直接返回视图

标签: c# asp.net-core asp.net-core-mvc asp.net-core-routing


【解决方案1】:

您能否将page 设为可选并重试? 如果页面在 Books 操作方法中为空,那么您可以在方法中抛出自定义错误。

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "pagination",
        template: "Books/Page/{page?}"
        defaults: new { controller = "Core", action = "Books"});
});

或者使用属性路由。

public class CoreController : Controller
{
   [HttpGet("/Books/Page/{page?}")]
   public IActionResult Books(int? page) { ... }
}

【讨论】:

    猜你喜欢
    • 2018-06-21
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多