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

36 javascript c# razor

如何将值从javascript变量传递给razor变量,是否可能是asp.net mvc razor视图引擎?

@{
    int a = 0;
}

<script>
    var b = ...
    @a = b;
</script>
Run Code Online (Sandbox Code Playgroud)

小智 55

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

当服务器获取视图请求时,它将仅使用HTML,CSS和Javascript代码创建视图.没有留下C#代码,它们都被"翻译"为客户端语言.

当视图仍然在服务器上时,Javascript代码DO存在,但它没有意义,只能由浏览器执行(客户端再次执行).

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

简而言之:

  1. 服务器获取请求.

  2. 服务器创建"获取"视图,计算并转换嵌入在视图中的所有C#代码,CSS,Javascript和HTML.

  3. 服务器将视图的客户端版本作为对请求的响应返回给浏览器.
  4. 浏览器呈现页面并执行所有Javascripts


Car*_*ors 38

但如果用一个代替@ html.Hidden字段中的变量,就有可能.如在这个例子中.

@Html.Hidden("myVar", 0);
Run Code Online (Sandbox Code Playgroud)

设置每个脚本的字段:

<script>
function setMyValue(value) {
     $('#myVar').val(value);       
}
</script>
Run Code Online (Sandbox Code Playgroud)

我希望我至少可以提供不小的解决方法.

  • 很简单,使用如下:`@HtmlAction("ActionName","myVar")`在HTLM中``@html.Hidden`等同于`<input type ="hidden"value = 0 id ="myVar"/ >`另请参阅[如何设置和获取ASP.net MVC隐藏字段值](http://forums.asp.net/t/1902490.aspx?How+to+set+and+get+ASP+net+MVC +隐藏+字段+值) (3认同)