2013-05-22 34 views
0

我努力在我的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

混淆?你正試圖訪問C#中的JS變量?你需要使用點擊處理程序來處理這個。 – PSL

+1

您需要了解客戶端代碼和服務器端代碼之間的區別。 Js是客戶端C#(Razor)是服務器端。這兩個人不能直接這樣說話。 – Liam

回答

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

非常感謝你!完美的作品! – Caveman

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>