2013-05-22 3 views
0

Я стараюсь иметь условие тег внутри моей страницы cshtmlиспользование условие в 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» не существует в текущем контексте

Как я могу это исправить?

Спасибо :)

+8

перепутать? вы пытаетесь получить доступ к переменной JS в C#? Для этого вам нужно использовать обработчик кликов. – PSL

+1

Вам нужно прочитать разницу между кодом на стороне клиента и кодом на стороне сервера. Js - клиентская сторона C# (Razor) - серверная. Они не могут говорить прямо так. – Liam

ответ

1

Я думаю, вы хотите это сделать. Вы поднимаете Javascript varibles с помощью C#.

Ваш код C# в Razor выполняется n сервером, а html отображается назад. Он не знает, что такое isTrendClicked, установленное в javascript, которое происходит, когда вы запускаете его в браузере. 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

большое вам спасибо! Работает отлично! – Caveman

1

Вы смешиваете бритву и 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> 
Смежные вопросы