2017-07-31 49 views
2

我想分配viewbag我的JavaScript变量从模型分配Viewbag到JS变量抛出一个异常

<script> 

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

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

比较的一些价值,但是,这将引发一个例外:

Uncaught SyntaxError: Unexpected token =

我能做些什么?

+0

不认为你可以使用客户端变量分配服务器端一 – Rahul

+0

@Rahul但我怎么能比较这些值? – gsiradze

+1

'ViewBag'是服务器端代码。视图发送到浏览器后无法进行设置 –

回答

1

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

它看起来像是你想要uid的值来决定页面内容。如果您希望将这些更改设置为服务器端(即将页面发送给浏览器之前),那么您必须让MVC控制器在返回其视图之前从外部服务器获取该值。解决同样问题的一种更传统的方法是使用Javascript转换浏览器中的页面。

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>