我遇到了问题
我正在尝试建立以下路线:
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不起作用。
它返回404
不应该吗?
public ActionResult Index(string parameters)
{
// parameter comes aaa
}
的Th
答案 0 :(得分:0)
如果您尝试http://localhost:12982/Public/Form/Index/aaa怎么办? 在你的情况下,你正在呼叫一个名为" aaa"在FormController中,它不存在。
答案 1 :(得分:0)
以下代码经过测试: 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 }
);
答案 2 :(得分:0)
我发现了一种不是我想要的方式,但却有效。
我不能隐含动作,所以我必须指定控制器和动作,并将一个额外的参数作为第一个参数,当它只有一个时。
现在如果我只用一个参数调用服务,它就不会返回404
routes.MapRoute(
name: "OpenForm",
url: "public/{controller}/{action}/{arg}/{*parameters}",
defaults: new { categorySlug = UrlParameter.Optional ,subCategorySlug = UrlParameter.Optional }
);