尝试从 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
位于Views
中Home
文件夹下的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 剃须刀)?