如何让Redirect()按我想要的方式工作

时间:2012-07-09 20:19:43

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

我在登录工作后获得重定向时遇到了一些问题。所以我想出了将当前页面存储在viewbag中并使用它来重定向的想法,所以如果页面是mydomain.com/debate/1我最终会在viewbad中存储“/ debate / 1”但是当我尝试重定向给我这个投诉

  

参数字典在'Political debate.Controllers. debateController'中包含方法'System.Web.Mvc.ActionResult DebateDetails(Int32)'的非可空类型'System.Int32'的参数'id'的空条目。可选参数必须是引用类型,可空类型,或者声明为可选参数。   参数名称:参数

但是,如果我手动输入mydomain.com/ debate/1,它会按预期工作。

有没有办法让Redirect按我想要的方式工作?

2 个答案:

答案 0 :(得分:2)

由于我没有看到任何代码,我无法评论您尝试这样做的方式(这是行不通的)。在以后的帖子中,请发布您的代码。如果您只是重定向到控制器上的默认操作,这是一种重定向的方法:

return this.RedirectToAction("Index", new { id = debateDetailsID } );

虽然很难说出你真正想做的事情,因为你提到debate/1但被调用的方法是DebateDetails并不匹配(除非你改变了默认路由,再一次,我不知道,没有代码)。

<强>更新

根据您的评论,您的MapRoute中有错误。您的MapRoute应如下所示:

routes.MapRoute("Debate Details", 
                "debate/{id}", 
                 new { controller = "Debate", 
                       action = "DebateDetails",
                       // this id value is missing 
                       // so it's not being passed to the controller
                       id = UrlParameter.Optional } );

答案 1 :(得分:0)

答案就在投诉中,在这种特殊情况下,你要发送一个参数,如果指定则检查

您的代码必须如redirectToAction("nameOfAction", new {id = yourIdOnViewBag}