你總是可以使用catch的所有語法(我不知道名稱是否合適)。
路線: routeTable.MapRoute( "Path", "{*path}", new { controller = "Pages", action = "Path" });
控制器動作被定義爲: public ActionResult Path(string path)
在爲控制器,你將有一個路徑的動作,所以只需要灑它和分析。
要調用另一個控制器,你可以使用RedirectToAction(我認爲這是更正確的方法)。通過重定向,您可以爲其設置永久性重定向。 或者使用類似的東西:
internal class MVCTransferResult : RedirectResult
{
public MVCTransferResult(string url) : base(url)
{
}
public MVCTransferResult(object routeValues)
: base(GetRouteURL(routeValues))
{
}
private static string GetRouteURL(object routeValues)
{
UrlHelper url = new UrlHelper(
new RequestContext(
new HttpContextWrapper(HttpContext.Current),
new RouteData()),
RouteTable.Routes);
return url.RouteUrl(routeValues);
}
public override void ExecuteResult(ControllerContext context)
{
var httpContext = HttpContext.Current;
// ASP.NET MVC 3.0
if (context.Controller.TempData != null &&
context.Controller.TempData.Count() > 0)
{
throw new ApplicationException(
"TempData won't work with Server.TransferRequest!");
}
// change to false to pass query string parameters
// if you have already processed them
httpContext.Server.TransferRequest(Url, true);
// ASP.NET MVC 2.0
//httpContext.RewritePath(Url, false);
//IHttpHandler httpHandler = new MvcHttpHandler();
//httpHandler.ProcessRequest(HttpContext.Current);
}
}
但是這種方法需要在IIS或IIS EXPRES Casinni運行不支撐Server.Transfer方法
請看一看這個小手冊:MVC .Net Routing](http://stackoverflow.com/questions/379558/mvcnet-routing#379823),部分**選項3 ** - 它描述瞭如何構建自定義請求處理鏈。 – maxnk 2008-12-22 06:34:18