2012-07-09 29 views
0

我一直有一些問題,獲得重定向後登錄工作,我想如何。所以我提出了將當前頁面存儲在viewbag中並使用它重定向的想法,因此如果頁面是mydomain.com/debate/1,我最終會在viewbad中存儲「/ debate/1」,但是當我試着改它給我這個投訴如何讓重定向()工作,我想如何

參數字典包含非可空類型「System.Int32」的方法「System.Web.Mvc.ActionResult DebateDetails的參數「ID」無效項(Int32)已'在'PoliticalDebate.Controllers.DebateController'中。可選參數必須是引用類型,可爲空類型,或者聲明爲可選參數。 參數名稱:參數

但是,如果我手動輸入mydomain.com/Debate/1,它將按預期工作。

有沒有辦法讓重定向工作,我想怎麼樣?

+0

感謝所有人,討論迫使我找到問題 – Roge 2012-07-09 20:46:08

回答

2

由於我沒有看到任何代碼,我不能評論你試圖做到這一點(這是行不通的)。在未來的帖子上,請張貼您的代碼。這是,如果你簡單地重定向到控制器上的默認操作如何可以重定向一個辦法:

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

雖然這是很難告訴你真正想這樣做,因爲你提到debate/1尚未被調用的方法是DebateDetails哪個不匹配(除非你改變了默認路由,我不知道,沒有代碼)。

更新

根據您的意見,你有你的圖路線錯誤。你的圖路線應該是這樣的:

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 }); 
+0

Im在每個頁面Request.Url.AbsolutePath獲取此值並將其存儲在viewbag中。這個想法是每當我登錄LogOn時,我可以使用ViewBag中的當前值來正確地重定向用戶。因爲我使用了ajax和openid集成,所以我不能依賴內置的ASP成員資格位來正確重定向。 – Roge 2012-07-09 20:32:02

+0

我不相信我可以在沒有看到您的重定向代碼的情況下進一步發表評論。 – 2012-07-09 20:34:28

+0

重定向代​​碼簡單地是重定向(ViewBag.Page)ViewBag.Page包含來自Request.Url.AbsolutePath的值 – Roge 2012-07-09 20:38:25

0

答案是那裏的投訴,在這種特殊情況下,如果這是指定的

你的代碼必須看起來像redirectToAction("nameOfAction", new {id = yourIdOnViewBag}

你發送一個參數,這樣,結賬
+0

不會工作,它並不總是與一個ID的行動它將是不同的網址,我可能是以非最佳方式設置它。我作爲一個新人不好 – Roge 2012-07-09 20:37:31