尝试从 ASP.NET Core MVC Razor 中的 _Layout 页面重定向时出错

Posted

技术标签:

【中文标题】尝试从 ASP.NET Core MVC Razor 中的 _Layout 页面重定向时出错【英文标题】:Error when trying to redirect from _Layout page in ASP.NET Core MVC Razor 【发布时间】:2022-01-11 08:27:27 【问题描述】:

我对 .NET Core 相当陌生,曾在 Windows 窗体等较旧的 .NET 版本上工作过。我在_Layout 页面中设置了一个导航栏,我想用它来重定向到其他 Razor 页面。

例如,我在 Views 文件夹之外的名为 Home 的文件夹中有一个 Home 页面 (index.cshtml)。如果我想从导航栏中选择客户搜索选项,我会使用 onclick 事件来调用下面的函数。

function SearchClick() 
    window.location.href = "CustomerSearchView.cshtml";
    return false;

CustomerSearchView 位于ViewsHome 文件夹下的CustomerSearch 文件夹中。还有一个CustomerSearchController有代码

public IActionResult Index()

    return View();

如果我尝试将路径添加到浏览器中,例如https://localhost:7022/CustomerSearchView.cshtml,则会出现错误

找不到这个 localhost 页面 - 没有找到该网址的网页:https://localhost:7022/CustomerSearchView.cshtml

我已经尝试了使用Views/CustomerSearch 和其他人的完整路径的各种变体,但得到了同样的错误。

我不熟悉路由过程,我不确定自己犯了什么错误,我认为这样可以节省时间询问,如果有人能指出这一点,我会非常高兴。

【问题讨论】:

【参考方案1】:

试试这个

function SearchClick() 
    window.location.href = "/CustomerSearch/Index";
    return false;

【讨论】:

【参考方案2】:

我通过更正路由并将以下代码添加到我的 program.cs 来解决问题

app.MapControllerRoute(
    name: "customersearch",
    pattern: "controller=CustomerSearchController/action=Index/id?",
    defaults: new  controller = "CustomerSearchController", action = 
"Index" );

当使用控制器添加任何新视图时,只需为其添加等效的路由代码,使其对项目可见。

【讨论】:

以上是关于尝试从 ASP.NET Core MVC Razor 中的 _Layout 页面重定向时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何从 HttpContext 获取 ASP.NET Core MVC 过滤器

从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用

从 ASP.NET MVC 项目调用 .NET CORE 5 Web API 微服务时无法检索 BadRequest 错误

从 ASP.NET MVC 迁移到 ASP.NET Core MVC

在 ASP .Net Core MVC 中启动时执行数据库更新

如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?