我在登录工作后获得重定向时遇到了一些问题。所以我想出了将当前页面存储在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按我想要的方式工作?
答案 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}