0

我不斷測試ASP.NET MVC 2 Preview 2的新特性,名爲:「一個項目中的區域」。 目前我有一個從aspx代碼鏈接到CSS和JS文件的問題。在aspx文件中的href路徑

當URL指向沒有ID的網址,一切工作正常:

http://mysite.com/area/controller/action

出現問題,當URL包含參數:

http://mysite.com/admin/controller/action/id

然後該頁面無法從/ content和/ scripts找到css和js文件。

我認爲這個問題與路由有關。我有標準的路由規則設置,如:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     AreaRegistration.RegisterAllAreas(); 

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

,並在該地區的航線配置:

 public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = "" } 
      ); 
    } 

在aspx文件中的一個例子資源的href:

<link href="../../Content/datatables.css" rel="stylesheet" type="text/css" /> 

任何人都可以提出一個解決方案解決不良資源href的問題?

回答

1

當您使用URL路由時,您不知道URL中的/ many/path/parts會事先存在於您的URL中。所以你根本不能使用路徑相對的URL:你不知道你需要多少'..'段。

相反,使用紮根網址:

<link href="/Content/datatables.css" rel="stylesheet" type="text/css" /> 

如果您的應用程序可以安裝在非根URL(例如,您的area S的一個下,你必須輸出區名稱的一部分紮根URL(據推測,這是使用AreaRegistrationContext.AreaName獲得。)

+0

謝謝您的回答。我知道​​根-SL的只是認爲有更好的東西。 – twk 2009-10-05 17:00:53

0

這個怎麼樣,設置RUNAT = 「server」 屬性。

<head runat="server"> 
    <link href="~/Content/datatables.css" rel="stylesheet" type="text/css" runat="server" /> 
    ... 
+0

謝謝你的想法,但它不起作用。 – twk 2009-10-06 22:11:05

+0

uuun。 在我的項目中運行這個代碼... 你的頭標怎麼樣? 順便說一下,它不能工作腳本標記。因爲它被作爲服務器端代碼處理。 – takepara 2009-10-07 02:15:14