我有以下行动:
public ActionResult CatchAll(string pathname, bool isPreview)
{
CatchAllModel model = _aliasModelBuilder.BuildCatchAllModel(pathname, isPreview);
if (model.Page != null)
{
return View(model);
}
else
{
throw new HttpException(404, "Page not found");
}
}
这个的路线是
routes.MapRoute(
name: "Default",
url: "{*pathname}",
defaults: new { controller = "Alias", action = "CatchAll", isPreview = false });
现在,如果我浏览到localhost/about-us?isPreview=true
,则路径名将显示为about-us
,但isPreview
会显示为false。
我有什么问题 - 我认为路由默认值应该被查询字符串
覆盖答案 0 :(得分:0)
好的,这看起来好像路由中的默认参数设置没有被查询字符串覆盖。所以我从路线中删除了它:
routes.MapRoute(
name: "Default",
url: "{*pathname}",
defaults: new { controller = "Alias", action = "CatchAll" });
并将其添加到操作中:
public ActionResult CatchAll(string pathname, bool isPreview = false)
我想我必须压制CA1026,因为我们无法为动作制作重载方法