javascript - 如何将值从 javascript 变量传递给 razor 变量?

标签 javascript c# razor

如何将值从 javascript 变量传递给 razor 变量,是否可以使用 asp.net mvc razor View 引擎?

@{
    int a = 0;
}

<script>
    var b = ...
    @a = b;
</script>

最佳答案

你不能。原因是他们不在同一时间“生活”。 Razor 变量是“服务器端变量”,在页面发送到“客户端”后它们不再存在。

当服务器收到 View 请求时,它会创建仅包含 HTML、CSS 和 Javascript 代码的 View 。没有留下任何 C# 代码,它都被“翻译”成客户端语言。

当 View 仍在服务器上时,Javascript 代码确实存在,但它没有意义,只会由浏览器执行(再次是客户端)。

这就是为什么您可以使用 Razor 变量来更改 HTML 和 Javascript,但反之则不行。尝试查看您的页面源代码(在大多数浏览器中为 CTRL+U),那里不会有 C# 代码的迹象。

简而言之:

  1. 服务器收到一个请求。

  2. 服务器创建或“获取” View ,然后计算 View 中嵌入的所有 C# 代码并将其转换为 CSS、Javascript 和 HTML。

  3. 服务器将 View 的客户端版本返回给浏览器作为对请求的响应。 (此时不再有 C#)

  4. 浏览器呈现页面并执行所有 Javascript

关于javascript - 如何将值从 javascript 变量传递给 razor 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317182/

相关文章:

javascript - 如何使用 createTextNode 插入 HTML 实体?

javascript - 导入自动调用函数将 this 绑定(bind)到 window 对象

c# - ILogger (ASP.NET Core) 日志被调用甚至 IsEnabled 返回 false

javascript - 在 Razor View 页面中使用 C# 对象

javascript - 尝试将一个元素加载到另一个元素时出现意外字符串

javascript - 使用 jQuery 生成的表填充输入字段

C#:在终结器中,如何确定应用程序是否正在关闭?

c# - 通过在满足条件时添加项目来创建列表

c# - 如何在 Razor View 中测试 lambda 表达式?

asp.net-mvc-4 - 如何让 MVC 找到我的 Controller 路径?