2016-02-05 137 views
1

我有我的js文件,我動態地更改圖像src。MVC jquery image src Url.Content引用問題

這是我的,我想目前的代碼:

$("#prodFront").attr("src", '@Url.Content("~/Order_Images/Campaigns/"' 
    + campaignKey + '"/"' + id + '"/General/front.png"")'); 

我的形象實際上是位於位置:

Root folder/Order_Images/Campaigns/ 
765662bd-06ec-4925-8611-f147e232a124/1/General/front.png 

$("#prodFront").attr("src", 
'@Url.Content("~/Order_Images/Campaigns/ 
765662bd-06ec-4925-8611-f147e232a124/1/General/front.png")'); 

但我的代碼總是轉到位置像

http://localhost:50209/BuyNow/Index/@Url.Content(%22~/Order_Images/ 
Campaigns/765662bd-06ec-4925-8611-f147e232a124/1/General/front.png%22) 

我可以在這裏查看圖片:

http://localhost:50209/Order_Images/Campaigns/765662bd-06ec-4925-8611- 
f147e232a124/1/General/front.png 

有人可以請這些引號幫忙。

謝謝。

回答

0

@Url.Content是一個razor命令,它在調用頁面時使用C#創建一個字符串。您無法將@Url.Content作爲「動態」值傳遞,您需要在控制器中調用Url.Content,並讓它將結果字符串傳遞給您的JavaScript。這就是爲什麼它會成爲http://localhost:50209/BuyNow/Index/@Url.Content(%22~/Order_Images/。 做一個Ajax調用服務器將是我將如何處理它。

$.ajax({ 
     url: Url.Content("GetImageUrlAction", "SomeController"), 
     data: {id = theImageYouWantsId}, 
     success: function(returnData){ 
       $('#prodFront').attr('src', returnData.imageUrl); 
      } 
    }); 

然後有這樣

public JsonResult GetImageUrlAction(string, campaginKey, string id){ 
    var imageUrl = Url.Content("~//Order_Images//Campagins//" + campaginKey + "//" + id + 
           "//General/front.png"); 
    return Json(new { imageUrl }); 
} 

控制器如果你的基本目錄是不會被改變,你可以設置頁面加載基本變量,然後只是添加campaginKey id爲後來

//Declare your variable on document ready 
$(document).ready(function(){ 
    baseUrl = '@Url.Content("~/Order_Images/Campaigns/")'; 
}); 

再後來你的jQuery您可以添加到它

$("#prodFront").attr("src", baseUrl + campaginKey + "/" + id + 
"/1/General/front.png"); 
+0

但是,如果我們看到這個答案,我們可以有動態URL http://stackoverflow.com/a/8266453/5610512 –

+0

@rohankoshti我想我誤解你的問題。你想要在頁面上發生變化的圖像,還是在頁面之間更改(可能)的圖像? –

+0

圖像會隨jQuery功能而改變。我有兩個縮略圖的圖像..他們是動態數量的這樣的集..在一個運動中沒有圖像=沒有集..每集都有產品的正面和背面圖像..所以下拉改變我需要兩個圖像改變了..一切都與jquery –

1

由於campaignKeyid是JavaScript變量。您不能將它們與@Url.Content一起使用,因爲它將由服務器端的Razor引擎執行。

作爲解決方法,您可以使用佔位符的生成URL -1-2用於生成URL,該URL用簡單的字符串操作替換。

//Generate URL 
var url ='@Url.Content("~/Order_Images/Campaigns/-1/-2/General/front.png")'; 

//Replace placeholder 
url = url.replace('-1', campaignKey).replace('-2', id); 

//Set image 
$("#prodFront").prop("src",url); 
+0

嘿@Satpal,剛剛意識到我的迴應的後半部分是非常使用相同的方法,你說的。是否有任何理由使用其中一種?還是降低偏好? –