2011-08-07 29 views
4

我想在我的應用程序中使用mvc.net中的路由添加一個區域。 對於控制器我說:如何路由到mvc.net中的css/js文件

routes.MapRoute(
       "Area1", // Route name 
       "Area1/{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
      ); 

我怎樣才能途徑相同的方式的CSS/JS文件,即我想有area1/content/site.css/content/site.css/content/area1/site.css

感謝

回答

3

我沒有發現這樣做有MVC路由什麼我落得這樣做的一個方法是:

void context_BeginRequest(object sender, EventArgs e) 
     { 
      HttpApplication Application = sender as HttpApplication; 

      var match = r.Match(Application.Request.Url.AbsolutePath); 
      if (match.Success) 
      { 
       var fileName = match.Groups[2].Value; 
       Application.Context.RewritePath("/" + fileName); 
      } 
     } 

r爲: 我一個HTTP模塊在運行此代碼在我的情況下,正則表達式:

private readonly Regex r = new `Regex("^/gmail(/canvas)?/((content|scripts|images|tinymce).*)$", RegexOptions.IgnoreCase);` 

在Global.asax中,我增加:

routes.IgnoreRoute("{*staticfile}", new { staticfile = @".*\.(css|js|gif|jpg)(/.*)?" }); 

阻止mvc.net路由這些請求。

有人可能還必須設置iis6/iis7通過mvc.net將請求路由到靜態文件,但我忘記了詳細信息。

我從幾個帖子中選擇了這種方法,我不記得了,所以我道歉,我不能給予適當的信貸。

4

這樣

/content/site.css

如果你想

始終轉到的site.css:

routes.MapRoute(
       "Area1", // Route name 
       "/{action}/site.css", // URL with parameters 
       new { controller = "Area1", action = "content" } // Parameter defaults 
      ); 

,如果你想轉到不同的CSS通過提供的css名:

routes.MapRoute(
       "Area1", // Route name 
       "/{action}/{resource}.css", // URL with parameters 
       new { controller = "Area1", action = "content", resource = UrlParameter.Optional } // Parameter defaults 
      ); 

/content/area1/site.css

routes.MapRoute(
        "Area1", // Route name 
        "/{action}/Area1/{resource}.css", // URL with parameters 
        new { controller = "Area1", action = "content", resource = UrlParameter.Optional } // Parameter defaults 
       ); 
+0

感謝您的回答。 這不適合我,因爲我不試圖路由到控制/操作,我試圖路由到靜態css文件。 – Daniel

相關問題