Javascript 访问razor块中的局部js变量
我试图在javascript中编写razor代码,我试图在razor代码中使用局部变量。以下是示例代码:Javascript 访问razor块中的局部js变量,javascript,c#,razor,asp.net-mvc-5,Javascript,C#,Razor,Asp.net Mvc 5,我试图在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 =
<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>
对于(i=0;i
问题是razor代码无法识别
id
(即,它在当前上下文中不存在)。我怎样才能做到这一点?有什么办法吗?如果您只是使用默认路由,那么就不用麻烦使用Razor@Html.ActionLink。使用显式标记:
var actions = $('<td><a href="/[your-controller-here]/Edit/'+ escape(id) + '">Detay</a></td>');
var actions=$('');
…显然,无论您当前的控制器名称是什么,都会替换[此处的控制器]
(我假设您的“id”不一定是URL编码的,因此是“escape”。如果您只是使用默认路由,那么就不用使用Razor@Html.ActionLink。使用显式标记:
var actions = $('<td><a href="/[your-controller-here]/Edit/'+ escape(id) + '">Detay</a></td>');
var actions=$('');
…显然,无论您当前的控制器名称是什么,都会替换[此处的控制器]
(我假设您的“id”不一定是URL编码的,因此是“escape”。如果您只是使用默认路由,那么就不用使用Razor@Html.ActionLink。使用显式标记:
var actions = $('<td><a href="/[your-controller-here]/Edit/'+ escape(id) + '">Detay</a></td>');
var actions=$('');
…显然,无论您当前的控制器名称是什么,都会替换[此处的控制器]
(我假设您的“id”不一定是URL编码的,因此是“escape”。如果您只是使用默认路由,那么就不用使用Razor@Html.ActionLink。使用显式标记:
var actions = $('<td><a href="/[your-controller-here]/Edit/'+ escape(id) + '">Detay</a></td>');
var actions=$('');
…显然,无论您当前的控制器名称是什么,都会替换[此处的控制器]
(我假设您的“id”不一定是URL编码的,因此是“escape”。您在这里混合了服务器端和客户端。无法使用客户端变量创建@Html.ActioLink。ActionLink是在服务器上呈现的,它对客户端变量没有任何线索
如果您想使用客户端变量,如“id”,请呈现一个普通的html链接(a)标记。您在这里混合了服务器端和客户端。无法使用客户端变量创建@Html.ActioLink。ActionLink是在服务器上呈现的,它对客户端变量没有任何线索
如果您想使用客户端变量,如“id”,请呈现一个普通的html链接(a)标记。您在这里混合了服务器端和客户端。无法使用客户端变量创建@Html.ActioLink。ActionLink是在服务器上呈现的,它对客户端变量没有任何线索
如果您想使用客户端变量,如“id”,请呈现一个普通的html链接(a)标记。您在这里混合了服务器端和客户端。无法使用客户端变量创建@Html.ActioLink。ActionLink是在服务器上呈现的,它对客户端变量没有任何线索
如果要使用客户端变量,如“id”,请呈现一个普通的html链接(a)标记。不可能访问razor块中的javascript变量。 这是因为razor在服务器中执行,javascript在浏览器中执行 但是,通过查看您的代码,您似乎在使用javascript填充表,这很糟糕,有两种模式可以解决此问题,一种模式解决服务器中的所有问题,另一种模式解决浏览器中的所有问题
$("#myButton").click(function(){
$("#myDinamicDiv").load("/Path/ToView");
});
然后使用razor的foreach循环生成表的html:
@foreach (var x in ViewBag.MyData)
{
<tr>
<td>Generate contents here, including links </td>
</tr>
}
@foreach(ViewBag.MyData中的变量x)
{
在此处生成内容,包括链接
}
正如在另一个答案中指出的,如果您使用默认路由,您可以在javascript代码中创建直接字符串并将其添加到您的页面,但是请记住,当使用此解决方案时,随着页面变得复杂,您的javascript将变得越来越不可维护,有一个对数据进行迭代的for循环是一个迹象,表明您可能会从javascript UI框架中受益,事实上,您所做的是Knockout.js教程(单页应用程序)第三课的核心内容。不可能在剃刀块中访问javascript变量。 这是因为razor在服务器中执行,javascript在浏览器中执行 但是,通过查看您的代码,您似乎在使用javascript填充表,这很糟糕,有两种模式可以解决此问题,一种模式解决服务器中的所有问题,另一种模式解决浏览器中的所有问题
$("#myButton").click(function(){
$("#myDinamicDiv").load("/Path/ToView");
});
然后使用razor的foreach循环生成表的html:
@foreach (var x in ViewBag.MyData)
{
<tr>
<td>Generate contents here, including links </td>
</tr>
}
@foreach(ViewBag.MyData中的变量x)
{
在此处生成内容,包括链接
}