【问题标题】:Javascript variable contains asp.net mvc razor code instead of valueJavascript 变量包含 asp.net mvc 剃须刀代码而不是值
【发布时间】:2014-08-08 06:20:39
【问题描述】:

我有如下声明:

<script type="text/javascript">
            @{
                string area = ViewContext.RouteData.DataTokens["area"] != null ? 
                    ViewContext.RouteData.DataTokens["area"].ToString().ToLower() : 
                    string.Empty;
            }


        var area = "@area";

</script>

如果我在控制台中调用 area 变量,我的 Google Chrome 会显示如下:

" != null ? ViewContext.RouteData.DataTokens["area"].ToString().ToLower() : """

这是 C# 代码的一部分 ...

错在哪里?

【问题讨论】:

    标签: c# javascript asp.net-mvc


    【解决方案1】:

    当您尝试在脚本块中使用剃刀时出现问题。

    这里有一个惊人的答案: Razor Syntax and Javascript

    所以你应该修改你的代码

     @{
        string area = ViewContext.RouteData.DataTokens["area"] != null ? 
                      ViewContext.RouteData.DataTokens["area"].ToString().ToLower() : 
                      string.Empty;
      }
    <script type="text/javascript">               
        var area = "@area";    
    </script>
    

    或者将你的代码包装在一个伪块中(或者@:,如果你使用的是新版本的 MVC)

    <script type="text/javascript">
                @{
                  <text>  string area = ViewContext.RouteData.DataTokens["area"] != null ? 
                        ViewContext.RouteData.DataTokens["area"].ToString().ToLower() : 
                        string.Empty;</text>
                }    
    
            var area = "@area";    
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2013-02-22
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多