這裏是我的路線:重定向到行動保持路由參數上的新動作無效
_routes = RouteTable.Routes;
_routes.Clear();
_routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
_routes.IgnoreRoute("{*favicon}", new {favicon = @"(.*/)?favicon.ico(/.*)?"});
_routes.MapRoute(
"Message-specific Actions",
"Messages/{message}/{action}",
new {controller = "Messages", action = "ViewMessage"},
new {message = @"\d+"}
);
_routes.MapRoute(
"General Message Actions",
"Messages/{action}",
new {controller = "Messages", action = "Index"},
new {action = @"\D+"}
);
_routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = ""} // Parameter defaults
);
_routes.MapRoute(
"Catch All",
"{*path}",
new {controller = "Error", action = "Error"}
);
這裏是我的控制器的相關部分:
public class MessagesController
{
public ActionResult Index()
{
return View();
}
// GET: ~/Messages/1
public ActionResult ViewMessage(int message)
{
return View(// stuff to get message from repo);
}
[HttpPost]
// POST : ~/Messages/1/Delete
public ActionResult Delete(int message)
{
// do stuff
return RedirectToAction("Index");
}
}
問題是,後在瀏覽器的URL在我看來Delete
不是~/Messages/
,而是它(假設message
是12)~/Messages/12/Index
。
索引甚至不接受message
參數。我不明白爲什麼會發生這種情況。我需要改變什麼?
這沒有幫助,因爲它會導致ViewMessage路由的URL變成'/ Messages/ViewMessage?message = 12`而不是所需的`/ Messages/12`。 – adamjford 2011-02-18 18:58:49