2011-05-03 73 views
37

我想在javascript環境(在cshtml文件中)爲MVC 3動作生成一個url。MVC3 Url.Action查詢字符串生成

<script type="text/javascript"> 
    ... 
    var src = "@Url.Action("GetProductImage", new { productId = Model.Product.Id, pos = 1, size = 0 })"; 
    $(document.createElement("img")).attr("src", src); 
    ... 
</script> 

現在,這工作幾乎沒問題,我的問題是querystring被轉義。 相反的:

"/Products/GetProductImage?productId=1&pos=0&size=0" 

它產生:

"/Products/GetProductImage?productId=1&amp;pos=0&amp;size=0" 

所以我的動作沒有被調用。

現在我知道我可以創建自己的自定義Url幫助函數,但我想知道是否可以使用這個或其他內置助手來獲取未轉義的URL?

在此先感謝,G

回答

58
<script type="text/javascript"> 
    var src = "@Html.Raw(Url.Action("GetProductImage", new { productId = Model.Product.Id, pos = 1, size = 0 }))"; 
    $(document.createElement("img")).attr("src", src); 
</script> 
+1

當然,我怎麼沒有想到...非常感謝 – egyedg 2011-05-03 16:05:14

+2

謝謝!我有同樣的問題:) 雖然它應該是@HtmlRaw(Url.Action(/*...*/))而不是@HtmlRaw(HtmlUrl.Action(/*...*/)) – lethek 2011-08-12 05:55:28

4
var src = "@Html.Raw(Url.Action("GetProductImage", new { productId = Model.Product.Id, pos = 1, size = 0 }))"; 

Url.Action爲我工作 HtmlUrl.Action

享受!