如何从控制器内重定向到特定的URL?

时间:2011-11-24 22:43:30

标签: asp.net-mvc controllers redirecttoaction

我在提交表单后尝试将用户重定向到特定地址。 我使用的是我的内容控制器中的以下代码:

return RedirectToAction("Business", new RouteValueDictionary(new { controller = "Content", action = "Business", Id = business.BusinessID }));

它创建一个这样的URL: 的 www.x.com/Content/Business?Id=13

我真正想要的是这样的: 的 www.x.com/Content/Business/13

我真的不希望将查询字符串与?分开?但要与其他网址保持一致。

有没有这样做?

3 个答案:

答案 0 :(得分:2)

代码实际上应该是同一个东西,但需要注意的是在Global.asax文件中,我设置了我的路由表,我需要有以下代码片段,以便生成我想要的结果。请注意第三个url参数{parameter}

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

使用该代码,我只需要在我的代码中使用变量“parameter”而不是“Id”:

return RedirectToAction("Business", new RouteValueDictionary(new { controller = "Content", action = "Business", parameter= business.BusinessID }));

对于您在MapRout()函数中定义的变量使用相同的名称非常重要。

这样做,我得到了我想要的结果:

<强> www.x.com/Content/Business/13

答案 1 :(得分:1)

检查出来

返回RedirectToAction(“商家”,“内容”,新{Id = business.BusinessID});

答案 2 :(得分:0)

对我来说,您的代码行会产生您期望的链接,您的路由设置是否正常?