MVC 路由 returns 404 与
MVC routing returns 404 with
我有问题
我正在尝试设置以下路线:
routes.MapRoute(
name: "PublicForms",
url: "Public/Form/{*parameters}",
defaults: new { controller = "Form", action = "Index", parameters = UrlParameter.Optional}
);
但只有当我传递一个以上的参数时它才有效
示例:
http://localhost:12982/Public/Form/aaa/bbb 有效
public ActionResult Index(string parameters)
{
// parameter comes aaa/bbb
}
http://localhost:12982/Public/Form/aaa 不起作用。
它returns一个404
不应该吗?
public ActionResult Index(string parameters)
{
// parameter comes aaa
}
日
如果你尝试 http://localhost:12982/Public/Form/Index/aaa 会怎样
在您的情况下,您在 FormController 中调用了一个名为 "aaa" 的 Action,它不存在。
以下代码经过测试:
http://localhost:50956/Public/Form/foo
所以它可能会做一些类似于我认为你正在寻找的事情。希望对你有帮助。
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 }
);
我找到了一种方法,虽然不是我想要的但很有效。
我不能让动作隐式存在,所以我必须指定控制器和动作,并在只有一个时将一个额外的参数作为第一个参数。
现在,如果我只使用一个参数调用该服务,它不会 return 404
routes.MapRoute(
name: "OpenForm",
url: "public/{controller}/{action}/{arg}/{*parameters}",
defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
);
我有问题
我正在尝试设置以下路线:
routes.MapRoute(
name: "PublicForms",
url: "Public/Form/{*parameters}",
defaults: new { controller = "Form", action = "Index", parameters = UrlParameter.Optional}
);
但只有当我传递一个以上的参数时它才有效
示例:
http://localhost:12982/Public/Form/aaa/bbb 有效
public ActionResult Index(string parameters)
{
// parameter comes aaa/bbb
}
http://localhost:12982/Public/Form/aaa 不起作用。
它returns一个404
不应该吗?
public ActionResult Index(string parameters)
{
// parameter comes aaa
}
日
如果你尝试 http://localhost:12982/Public/Form/Index/aaa 会怎样 在您的情况下,您在 FormController 中调用了一个名为 "aaa" 的 Action,它不存在。
以下代码经过测试: http://localhost:50956/Public/Form/foo 所以它可能会做一些类似于我认为你正在寻找的事情。希望对你有帮助。
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 }
);
我找到了一种方法,虽然不是我想要的但很有效。
我不能让动作隐式存在,所以我必须指定控制器和动作,并在只有一个时将一个额外的参数作为第一个参数。
现在,如果我只使用一个参数调用该服务,它不会 return 404
routes.MapRoute(
name: "OpenForm",
url: "public/{controller}/{action}/{arg}/{*parameters}",
defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
);