将Viewbag分配给js变量会引发异常

时间:2017-07-31 12:49:52

标签: c# asp.net-mvc razor viewbag

我想将viewbag分配给我的javascript变量来比较模型中的某些值

encoding

但这引发了一个例外:

  

未捕获的SyntaxError:意外的令牌=

我该怎么办?

2 个答案:

答案 0 :(得分:1)

服务器使用变量@ViewBag.someId生成它发送给浏览器的静态HTML页面。浏览器在收到HTML后能够直接更改服务器上的变量,这没有意义。

看起来您希望uid的值来决定页面内容。如果您希望在服务器端进行这些更改(即在将页面发送到浏览器之前),那么您必须让MVC控制器在返回其视图之前从外部服务器获取此值。解决相同问题的更常规方法是使用Javascript在浏览器中转换页面。

答案 1 :(得分:1)

作为comment said,ViewBag是服务器端代码,您不能在C#代码块中使用js变量设置ViewBag,但可以使用ViewBag值设置js变量。像:

<script>
    var uid ='@ViewBag.someId';
</script>

如果您只想将Model.AppDataFbId与js变量(uid)进行比较,请在js代码中添加逻辑。

 <script>
  function compare(){
     if('@Model.AppDataFbId'==uid){
         //other code   
     }
  }
 </script>