MVC查询字符串参数未通过操作

时间:2017-06-23 14:30:30

标签: c# asp.net-mvc

我有以下行动:

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。

我有什么问题 - 我认为路由默认值应该被查询字符串

覆盖

1 个答案:

答案 0 :(得分:0)

好的,这看起来好像路由中的默认参数设置没有被查询字符串覆盖。所以我从路线中删除了它:

routes.MapRoute(
    name: "Default",
    url: "{*pathname}",
    defaults: new { controller = "Alias", action = "CatchAll" });

并将其添加到操作中:

public ActionResult CatchAll(string pathname, bool isPreview = false)

我想我必须压制CA1026,因为我们无法为动作制作重载方法