2009-09-17 45 views

回答

5

如果您瀏覽到http://mysite/Downloads/{ACTION}它將觸發您的控制器操作。

在你的例子中唯一不起作用的是/Downloads沒有動作。您可以重新編寫此URL以將您重定向到默認操作。

此外,您需要讓路由處理程序忽略您的下載文件。您可以在global.asax文件中添加一行以忽略所有壓縮文件或其他適合的忽略模式。

routes.Ignore("{resource}.zip"); 
4

由於.NET 3.5,你可以航線現有文件:

public static void RegisterRoutes(RouteCollection routes) { 
    routes.RouteExistingFiles = true; 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", 
          action = "Index", 
          id = UrlParameter.Optional } 
    ); 
} 

因此,假設我們對網站的根文件夾名爲Markets包含audio.mp3文件:

\Markets 
\Markets\audio.mp3 

假設MarketsController的存在,如果我們提出Markets的請求,它將被路由到Markets/Index

如果我們要求/Markets/audio.mp3我們會得到mp3文件,如果我們要求Markets/AnythingElse,正常路由將適用。

相關問題