在cshtml标签中使用条件

时间:2013-05-22 14:47:42

标签: c# javascript jquery asp.net-mvc

我尝试在我的cshtml页面中有一个条件标记

<script type="text/javascript">
var isTrendClicked = false;
function trendChart() {
      $('.sparkline1').sparkline()
}

if ($("#chart-trend").click(function () {
   trendChart();
   isTrendClicked = true;
}));
</script>


<div>
            @if (isTrendClicked)
            { 
            <span class="inlinesparkline"></span>

            <span class="dynamicbar" ></span>
            }
            else { 
            <span class="sparkline1"></span>
            }
</div>

我收到错误: 错误CS0103:当前上下文中不存在名称“isTrendClicked”

我该如何解决这个问题?

谢谢:)

2 个答案:

答案 0 :(得分:1)

我想你想这样做。你正在用C#捣乱Javascript varibles。

Razor中的C#代码在服务器上执行,html呈现回来。它不知道在浏览器中运行时在javascript中设置的isTrendClicked是什么。到那时c#已经死了,直到你打电话给服务器。

 <script type="text/javascript">
   $(function(){
    var isTrendClicked = false;
    $('.inlinesparkline , .dynamicbar').hide(); 

    function trendChart() {
          $('.sparkline1').sparkline()
    }

    $("#chart-trend").click(function () {
       trendChart();
       $('.sparkline1').hide();
       $('.inlinesparkline , .dynamicbar').show(); 
    });
   });
    </script>


    <div>
         <span class="inlinesparkline"></span>
         <span class="dynamicbar" ></span>
         <span class="sparkline1"></span>
    </div>

答案 1 :(得分:1)

你正在混淆Razor和JavaScript。您的变量是JavaScript变量,但您正尝试通过Razor访问它。你还有一个click语句包含在一个狡猾的if语句中。

我认为这是你想要实现的目标:

<script type="text/javascript">
    var isTrendClicked = false;

    $(function () {
        $(".inlinesparkline, .dynamicbar").hide();
    });
    function trendChart() {
        $('.sparkline1').sparkline()
    }

    $("#chart-trend").click(function () {
        trendChart();
        isTrendClicked = true;
        $(".inlinesparkline, .dynamicbar").show();
        $('.sparkline1').hide();
    });
</script>


<div>
    <span class="inlinesparkline"></span>
    <span class="dynamicbar" ></span>
    <span class="sparkline1"></span>
</div>