我正在尝试在javascript中编写razor代码,其中我试图在razor代码中使用局部变量。以下是示例代码:
<script type="text/javascript">
for (i = 0; i < data.result.length; i++) {
$("#member-table tbody").append("<tr>");
var id = data.result[i].MemberId;
var actions = $("<td>" + @Html.ActionLink("Detay", "Edit", new { id }) + "</td>)");
}
</script>
问题是剃刀代码无法识别id
(即它不存在于当前上下文中)。我怎样才能做到这一点呢?有什么办法吗?
发布于 2015-08-30 06:32:11
如果你只是使用默认路由,那就简单地不用剃刀@Html.ActionLink了。坚持使用一个明确的标签:
var actions = $('<td><a href="/[your-controller-here]/Edit/'+ escape(id) + '">Detay</a></td>');
在这里,用你当前的控制器名称替换你的- ...obviously。
(我假设您的“id”不一定是URL编码的,因此使用“转义”。)
发布于 2015-08-30 06:36:39
您在这里混合了服务器端和客户端。您不能使用客户端变量创建@Html.ActioLink。Html.ActionLink是在服务器上呈现的,它根本没有任何关于客户端变量的线索。
如果您想使用客户端变量,如"id",则呈现一个普通的html链接(a)标记。
发布于 2018-08-31 08:59:20
这曾经对我很有效
if ('@ViewBag.DownloadLink' != '') {
window.location.href = '@ViewBag.DownloadLink';
}
https://stackoverflow.com/questions/32291182
复制相似问题