0

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

参数字典包含“PoliticalDebate.Controllers.DebateController”中方法“System.Web.Mvc.ActionResult DebateDetails(Int32)”的不可为空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数

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

有什么方法可以让 Redirect 按我的意愿工作吗?

4

2 回答 2

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 } );
于 2012-07-09T20:28:30.067 回答
0

答案就在投诉中,在这种特殊情况下,您要发送一个参数,因此请检查是否指定了此参数

您的代码必须看起来像redirectToAction("nameOfAction", new {id = yourIdOnViewBag}

于 2012-07-09T20:34:58.363 回答