如何使用参数强制重定向
本文关键字:重定向 参数 何使用 | 更新日期: 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 更改为其他名称。
我希望这会有所帮助。