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

当我硬编码boxId然后它的工作。但是当我写:JavaScript中可变的剃须刀ActionLink

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

它没有。这样可以混合JavaScript var和剃须刀吗?

回答

21

看一看this related Stack Overflow的问题。

这是一个挑战的原因是Razor方法在呈现时在Web服务器上执行,而JavaScript在运行时在客户端浏览器上执行。

我会用,如果你没有第二个参数做这样

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

东西才会有效解决这个问题。类似new {boxId = -1,page = 1}将会失败。分隔符&将被编码为&,页面参数在阳离子上不可用。为了它的工作,你需要使用@ Html.Raw(Html.ActionLink ... – 2017-12-20 08:49:28