2010-12-02 49 views
9

我有一個看起來像這樣嵌入剃刀語法中的JavaScript變量

function endcall_click(leadid) { 
    document.location = '@Url.Action("index","dispo",new{id=leadid})/'; 
} 

當然這是行不通的,因爲它把「leadid」作爲服務器端變量的方法,但我想注入的JavaScript變量傳入該方法。

我試圖包裝主角身份證,但沒有奏效。

function endcall_click(leadid) { 
    document.location = '@Url.Action("index","dispo",new{id="<text>leadid</text>"})/'; 
} 

任何想法?

回答

19

您無法將javascript變量注入到在服務器上進行評估的腳本,因爲此時該腳本執行並生成此變量尚未存在的輸出。實現這一目標的唯一途徑是操作得到的字符串:

function endcall_click(leadid) { 
    document.location = '@Url.Action("index", "dispo")/' + leadid; 
} 

的缺點是,這是假定操縱JavaScript中的路線,如果你決定改變他們的服務器上的代碼有可能打破。

+3

你是對的。現在我想到了。這是一個非常愚蠢的問題:)...有趣的是,我從一個服務器變量來計算leadid,所以我可以簡單地使用它。當我發佈的時候是凌晨3點;)。謝謝你的幫助。 – Emad 2010-12-02 14:01:36

1

我終於找到了解決辦法(* .vbhtml):

<script type="text/javascript"> 
function razorsyntax() { 
    /* Double */ 
    @(MvcHtmlString.Create("var szam =" & mydoublevariable & ";")) 
    alert(szam); 

    /* String */ 
    var str = '@stringvariable'; 
    alert(str); 
} 
</script>