【问题标题】:Assign Viewbag to js variable throws an exception将 Viewbag 分配给 js 变量会引发异常
【发布时间】:2017-07-31 12:49:52
【问题描述】:

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

<script>

    var uid = "..."; // this retrieves some variable from external server
    @ViewBag.someId = uid;

</script>
...
@If(Model.AppDataFbId == ViewBag.someId){ ... }

但这会引发异常:

Uncaught SyntaxError: Unexpected token =

我能做什么?

【问题讨论】:

  • 不要认为你可以使用客户端变量来分配服务器端一个
  • @Rahul 但是如何比较这些值?
  • ViewBag 是服务器端代码。视图发送到浏览器后无法设置

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


【解决方案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>

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多