Asp.net mvc MVC路由返回404和
我有个问题 我正在尝试设置以下路线:Asp.net mvc MVC路由返回404和,asp.net-mvc,model-view-controller,routing,routes,Asp.net Mvc,Model View Controller,Routing,Routes,我有个问题 我正在尝试设置以下路线: routes.MapRoute( name: "PublicForms", url: "Public/Form/{*parameters}", defaults: new { controller = "Form", action = "Index", parameters = UrlParameter.Optional} ); 但
routes.MapRoute(
name: "PublicForms",
url: "Public/Form/{*parameters}",
defaults: new { controller = "Form", action = "Index", parameters = UrlParameter.Optional}
);
但它只有在传递多个参数时才起作用
例如:
工作
这不管用
它返回一个404
难道不是吗
public ActionResult Index(string parameters)
{
// parameter comes aaa
}
如果你试着用它怎么办
在您的情况下,您正在调用FormController中不存在的名为“aaa”的操作。以下代码经过测试: 所以它可能会做一些类似于我认为你在寻找的东西。希望能有帮助
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("formPublic",
"Public/{*.}",
new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我找到了一种不是我想要的但有效的方法 我不能让动作保持隐式,所以我必须指定控制器和动作,并在只有一个参数的情况下添加一个额外的参数作为第一个参数 现在,如果我只使用一个参数调用服务,它不会返回404
routes.MapRoute(
name: "OpenForm",
url: "public/{controller}/{action}/{arg}/{*parameters}",
defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
);
它也不起作用。实际上,如果我把索引放在URL中,即使有很多参数,它也会停止工作。似乎在参数之前有一个操作。通常我们使用“/”符号来分隔域项,而不是参数。通常在aspx中,这是我们传递两个参数“field2=value2”的方式符号分隔参数,但不分隔“/”。此url的最简单含义是“转到contoso.com并找到product.aspx文件以打开它。在请求时使用field1和field2参数”。我认为这将有助于uHi@Sandaru,我正在尝试做这篇文章的主题“在URL模式中处理可变数量的段”。但是,只有一个参数不起作用。还有其他路由吗?不可能通过查看单个路由来调试路由问题,您需要将所有路由作为一个整体来查看。在这种情况下,您是尝试清除缓存,还是使用单独的浏览器启动它并查看其是否工作。
routes.MapRoute(
name: "OpenForm",
url: "public/{controller}/{action}/{arg}/{*parameters}",
defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
);