检查ViewBag值是否存在于javascript中

时间:2012-07-03 19:26:02

标签: asp.net-mvc-3 razor

我正在使用剃刀模板,以下是方案

$(function(){
   //if (ViewBag.IsCallFunction){
      somefunction();
   //
  //do something else
});

如果一个viewBag变量存在,即不为null,如果它设置为true,那么我想调用一些javascript函数。我该怎么做?

3 个答案:

答案 0 :(得分:1)

@{if(ViewBage.somevalue!=null && ViewBage.somevalue=="true")
  {
   <script type="text/javascript">
   somefunction();
   </script>
  }
}

但请记住,这将被调用为渲染,根据OP,您无法调用它,您可以渲染它,因此在文档加载时在document.ready中调用它

答案 1 :(得分:0)

<script type="text/javascript">
$(function() {
    @if (ViewData.ContainsKey("IsCallFunction") && ViewBag.IsCallFunction) 
    {
        <text>somefunction();</text>
    }
});
</script>

但我建议你使用视图模型而不是ViewBag,因为在这种情况下你的代码可以简化:

<script type="text/javascript">
$(function() {
    @if (Model.IsCallFunction) 
    {
        <text>somefunction();</text>
    }
});
</script>

答案 2 :(得分:0)

你没有从Razor代码调用 JavaScript函数,因为Razor在服务器上运行,而JavaScript在客户端上运行。

相反,您可以向客户端发出JavaScript代码,然后在浏览器加载Razor生成的HTML代码后运行该代码。

您可以执行类似

的操作
<script type="text/javascript">
@* The following line is Razor code, run on the Server *@
@if (ViewData.ContainsKey("IsCallFunction") && ViewBag.IsCallFunction) { 
@* The following lines will be emitted in the generated HTML if the above condition is true *@
$(function(){
      somefunction();
  //do something else
});

@} @* This is the closing brace for the Razor markup, executed on the Server *@
</script>