2012-03-17 13 views
12
var boxIdValue = 233; 
var result = title + '<br/>@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=233}, null)'; 

Quando ho hardcode boxId allora funziona. Ma quando scrivo:Javascript variabile nel rasoio ActionLink

var result = title + '<br/>@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=boxIdValue}, null)'; 

E non lo fa. È possibile mescolare javascript var e rasoio in questo modo?

risposta

21

Dai un'occhiata alla domanda this related Stack Overflow.

Il motivo per cui questa è una sfida è che il metodo Razor viene eseguito sul server Web in fase di rendering mentre il javascript viene eseguito sul browser client in fase di runtime.

vorrei risolvere questo facendo qualcosa di simile

var boxIdValue = 233; 
var link = '@Html.ActionLink("Detail", "Show", "Boxes", new{boxId=-1}, null)' 
link = link.replace('-1', boxIdValue); 
var result = title + '<br />' + link; 
+0

Questo funziona solo se non avete un secondo parametro. Qualcosa di simile a new {boxId = -1, page = 1} fallirà. Il separatore sarà codificato in html come & e il parametro di pagina non sarà disponibile sul catione. Per farlo funzionare è necessario utilizzare @ Html.Raw (Html.ActionLink ... –

Problemi correlati