如何使用参数强制重定向?

时间:2016-02-17 12:22:08

标签: c# asp.net-mvc asp.net-mvc-routing

我有一个参数值,我必须对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

如何阻止这种情况发生?

2 个答案:

答案 0 :(得分:3)

这是因为您的默认路线是;

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

如果您想继续使用此路线,则必须在网址中更改您的ID参数。

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

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

答案 1 :(得分:0)

从默认路由中删除ID

OkHttpClient client = builder.build();

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

我希望这会有所帮助。