7
我想重定向到在同一個控制器的動作,但失去了路由值(尤其是id
值)。事實證明,這非常困難。我配置了這樣的路線:是否可以使用RedirectToAction清除路由值?
context.MapRoute(
"Monitoring_controllerIdSpecified",
"Monitoring/{controller}/{id}/{action}",
new { action = "Status" }
);
context.MapRoute(
"Monitoring_default",
"Monitoring/{controller}/{action}",
new { controller = "Events", action = "Index" }
);
...和內部EventsController
東西的操作方法是這樣的:
public ActionResult Status(int id) {
if (id > 1000) {
TempData["ErrorMessage"] = "ID too high.";
return RedirectToAction("Index", new { id = (int?)null });
}
// (code to display status)
}
如果我再接入類似/Monitoring/Events/1001
,該RedirectToAction
確實調用,但我得到重定向到/Monitoring?id=1001
而不是隻有/Monitoring
。這似乎是相匹配的第一個路由,Monitoring_controllerIdSpecified
,即使這條路線有id
作爲強制性路線參數,我告訴它設置id
爲空,而奇怪的是轉向id
成一個查詢字符串鍵。換句話說,它沒有正確地清除/刪除id
路由值。設置id
在傳遞給RedirectToAction
的routeValues
對象爲空字符串只是給它設置爲null
同樣的效果。
爲什麼這樣做的,我怎麼能說服它,因爲id
已經完全從路由值去掉不符合第一條路線?
你嘗試過重定向之前從routevaluedictionary取下標識? – Slicksim 2013-04-04 10:17:57
您也可以嘗試'RedirectToRoute',而不是'RedirectToAction'。 – danludwig 2013-04-04 14:28:26
@Slicksim你在說什麼'RouteValueDictionary'?你能舉一個你的意思嗎? – Jez 2013-04-08 08:53:41