如何使用参数强制重定向

本文关键字:重定向 参数 何使用 | 更新日期: 2023-09-27 18:35:12

我有一个参数值,我必须对其进行URL编码。因此,我的理解是,它必须作为查询字符串发送到 URL 的末尾,而不是主 URL 的一部分。我已经通过直接将URL粘贴到浏览器中成功测试了这一点。

我正在尝试重定向到以下网址:

Server/Application/Area/Controller/Action/?id=xyz

但是当我使用

return RedirectToAction("Action", "Controller", new { area = "Area", id = Url.Encode(uniqueId) });

我被送到

Server/Application/Area/Controller/Action/xyz

如何阻止这种情况发生?

如何使用参数强制重定向

发生这种情况是因为您的默认路由是;

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Site", action = "Index", id = UrlParameter.Optional }
            );

如果你想继续使用这个路由,你应该改变你的URL中的ID参数。

但是,如果默认路由中省略了 id 参数,则您的操作将按预期重定向。

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}",
                defaults: new { controller = "Site", action = "Index"}
            );

从默认路由中删除 id

routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );

或者将参数名称从 id 更改为其他名称。

我希望这会有所帮助。