2012-05-08 17 views
0

我無法爲@ Url.Content方法準備字符串url。在Underscore.js模板中使用@ Url.Content連接字符串

這是我從下劃線模板

<% var imgId = "~/Content/images/" +pocket.get('imageId'); %> 
     <div class="image1">  
      <% alert(imgId); %>   
      <img src= "@Url.Content("+<% imgId %>+")" alt="Assigned Details" /> 

我會通過「圖像標識」,通過口袋對象的代碼塊。

我嘗試使用以下方法。對於imgId可變

<img src= "<%= @Url.Content(string.Format("~/Content/Images/{0}", imgId)) %>" />

回答

0

解決方案: 最後我想出從另一個線程的溶液:Call js function from underscore template 1. js函數

<script type="text/javascript"> 
var fullPath = '@HttpContext.Current.Request.Url.Scheme://@HttpContext.Current.Request.Url.Authority'; 
function GetPath(url) { 
    return fullPath + url; 
} 

  • 呼叫JS從代碼:<img src= '<%= GetPath(imgId) %>' alt="Med Assigned" />
  • 0

    您使用<% ... %>在一個下劃線模板來評估一些JavaScript,但您使用<%= ... %>如果你想輸出的結果最終得到的編譯錯誤;從fine manual

    模板功能既可以內插變量,使用<%= … %>,以及執行任意的JavaScript代碼,帶<% … %>

    你正在尋找的imgId值插值到結果,所以你想這樣的:

    <img src= "@Url.Content("+<%= imgId %>+")" alt="Assigned Details" /> 
    

    簡化的演示:http://jsfiddle.net/ambiguous/9gyKC/

    想必@Url.Content是獲取服務器上運行,以生產出給定資源的src屬性。如果是這種情況,那麼你將不得不重新思考這是如何工作的; <%= ... %>東西發生在之後@Url.Content已經被執行,所以當Underscore模板運行時就太晚了。您關於imgId錯誤與此注:

    <img src= "<%= @Url.Content(string.Format("~/Content/Images/{0}", imgId)) %>" /> 
    

    支持這一理論。您的服務器代碼不知道什麼是imgId,只有客戶端JavaScript。

    +0

    即使打印出來,如果包含在/src標記它沒有選取值。 src = + <%= imgId %> + –

    +0

    @RameshTamma:什麼是@ @ Url.Content,它什麼時候執行?它是否在服務器上執行? –

    +0

    我試圖使用@ Url.Content來解析URL,它是Razor語法,我們可以在客戶端語法中嵌入。 –