我想在 javascript 函数中访问 ac# 变量值,其代码类似于下面的代码段:
@{
var i=0;
}
....
<script type="javascript">
function MyObjects(e) {
for (j = 0; j <= @i; j++) {....}
</script>
.....
{
i=@i+1;}
我想在 javascript 函数中访问 ac# 变量值,其代码类似于下面的代码段:
@{
var i=0;
}
....
<script type="javascript">
function MyObjects(e) {
for (j = 0; j <= @i; j++) {....}
</script>
.....
{
i=@i+1;}
您不能从 JavaScript “访问” C# 变量,因为 C# 代码在服务器端运行以呈现 HTML,而包含生成的 JavaScript 的 HTML 在客户端浏览器中运行。
如果您想将 C# 变量的值呈现到客户端上运行的 JavaScript 代码中,您的代码
for (j = 0; j <= @i; j++) {....}
就是这样做的。
但是,如果您期望
{ i=@i+1;}
在客户端运行并影响服务器上的状态,它不会。
解决方案
如果您需要通过 JavaScript 更新服务器上某些内容的状态而不将 HTML 页面发送回服务器,则可以使用 Ajax 回调来完成。
您可以轻松地将 C#/Razor 值作为字符串获取。
<script type="text/javascript">
var i = parseInt("@i");
</script>