gpt4 book ai didi

c# - 为什么路径信息路由在 ASP.NET MVC 示例中不起作用?

转载 作者:行者123 更新时间:2023-11-30 21:51:40 25 4
gpt4 key购买 nike

我正在阅读 C# 6.0 和 .NET 4.6 Framework 这本书,我正在查看自定义路由示例 routes.MapRoute("Contact", "Contact/{*pathinfo} ", new { controller = "Home", action = "Contact"});。作者说这应该允许我输入 url http://localhost:64173/Home/Contact/Foo/Bar 并且仍然被定向到联系页面,因为添加了 *路径信息。但是,它只是给我一个 404 Not Found。作者特别指出:

...adding {*pathinfo} to the pattern... allows any number of additional URL parameters... Now when you enter the URL http://localhost:64173/Home/Contact/Foo/Bar it still shows the Contact page.

但我仍然收到 404 错误。我注意到 http://localhost:64173/Home/Contact/Foo 以及 http://localhost:64173/Contact/Foo/parm1/parm2/parm3 .所有这些都重定向回联系页面。完整的路由如下所示:

public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Contact", "Contact/{*pathinfo}", new { controller = "Home", action = "Contact" });
routes.MapRoute("About", "About/{*pathinfo}", new { controller = "Home", action = "About" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}

谢谢,我知道这可能很明显,但我无法判断是作者犯了错误还是我的 route 遗漏了什么。

注意 1:我还尝试了 *pathInfo(“I”大写)。这也不起作用。

注意 2:导航到 http://localhost:64173/Home/Contact/Foo 工作正常。

最佳答案

除非继承 ContactController,否则无法处理来自 ContactController 以外的 Controller 对 http://localhost/Contact/Foo 的请求> 从基本 Controller 以外的其他东西做一些实现工作来使这种 Url 重写发生。您所引用的摘录仅允许您将参数作为 Url 段传递,而无需在 Url 模板中明确指定所有参数。

关于c# - 为什么路径信息路由在 ASP.NET MVC 示例中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35414299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com