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

Cuando codigo boxId entonces funciona. Pero cuando escribo:Variable de Javascript en razor ActionLink

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

No lo hace. ¿Es posible mezclar javascript var y navaja de esta manera?

Respuesta

21

Echa un vistazo a this related Stack Overflow pregunta.

La razón por la que esto es un desafío es que el método Razor se ejecuta en el servidor web en tiempo de renderizado mientras que el javascript se ejecuta en el navegador del cliente en tiempo de ejecución.

que resolvería este haciendo algo como

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

Esto sólo funciona si usted no tiene un segundo parámetro. Algo como new {boxId = -1, page = 1} fallará. El separador será codificado en html como & y el parámetro de la página no estará disponible en el catión. Para que funcione, necesita usar @ Html.Raw (Html.ActionLink ... –

Cuestiones relacionadas