2010-11-04 69 views
0

我使用下面的函數進行虛擬化,以我的應用程序資源虛擬化在jQuery代碼的鏈接外部JavaScript內

<%= Html.Image(Url.Content("~/_assets/images/login.png"), "Login")%> 

路徑和參考,這工作很細,解決虛擬目錄,其中應用程序已部署,例如

http://someserver/xyz/_assets/images/login.png 

我怎麼能指着資源CSS內部時,得到相同的結果

body { background: #F4F4F4 url('/_assets/images/backgr_grad.png') repeat-x 0 0; } 

並從一個外部js文件中的JavaScript函數?

function loadCustomers() { 
    $.ajax({ 
     type: "get", 
     dataType: "html", 
     url: '/Customers/AllCustomers', 
     data: {}, 
     success: function(response) { 
     } 
    }); 
} 
+0

難道你們就不能使用CSS和JS文件中的相對路徑? – sheikhomar 2010-11-04 16:57:01

+0

@sheikhomar:你的意思是相對於包含css和js的masterpage位置的路徑嗎? – Lorenzo 2010-11-04 17:37:38

回答

2

從CSS,你總是可以使用相對路徑(在CSS它是相對於CSS文件的位置):

body { 
    background: #F4F4F4 url('../images/backgr_grad.png') repeat-x 0 0; 
} 

從JS有不同的技術,但一個由視圖定義一個全局JS變量:

<script type="text/javascript"> 
    var customersUrl = '<%: Url.Action("AllCustomers") %>'; 
</script> 

,然後使用該變量在外部JavaScript文件:

function loadCustomers() { 
    $.ajax({ 
     type: 'get', 
     dataType: 'html', 
     url: customersUrl, 
     data: { }, 
     success: function(response) { 
     } 
    }); 
} 

另一種技術包括漸進增強:

<%: Html.ActionLink("Load customers", "AllCustomers", 
    null, new { id = "customersLink" }) %> 

而且在JS逐步提高此鏈接:

$(function() { 
    $('#customersLink').click(function() { 
     $.ajax({ 
      type: 'get', 
      dataType: "html", 
      url: this.href, 
      success: function(response) { 
      } 
     }); 

     // make sure to cancel the default action 
     return false; 
    }); 
}); 
1

使用相對路徑。路徑是相對到CSS文件,不是頁面。