2011-03-04 59 views
12

我怎麼會做這種嵌入的JavaScript的MVC2的aspx頁面上的等價物:如何嵌入C#代碼在JavaScript CSHTML MVC3剃刀頁

if (('<%= Model.SomeFunctionEnabled %>' == 'True'),也是一個Razor視圖頁面上的整體功能代碼塊( cshtml)在MVC3?

喜歡的東西:

@{ 
    foreach(var d in Model.Employees) 
    { 
     .... 
    } 
} 

嵌入視圖頁面的HTML部分時,工作正常。 感謝

回答

30

爲什麼在客戶端上時,你可以這樣做在服務器端,並添加JavaScript,如果測試成功,以採取相應的行動測試:

<script type="text/javascript"> 
    @if (Model.SomeFunctionEnabled) { 
     <text> 
     // Put your javascript code here 
     alert('the function is enabled'); 
     </text> 
    } 
</script> 
+0

感謝達林,有時我想保持顯示代碼在視圖中。不過,我已經意識到,它只是VS的語法熒光筆不能正常工作 - 其實很好! – stan4th 2011-03-04 15:12:27

+0

@ stan4th,好的,但是在你的'if'語句的例子中,你用javascript混合了服務器端代碼,使得它很難閱讀。這就是爲什麼我建議你改進。 – 2011-03-04 15:15:07

+0

@DarinDimitrov - 我想渲染一些像下面這樣的內聯HTML ... if(isOutside){//一些HTML內聯標籤應該在這裏。 } 其他{ } '你能改正嗎?我現在不能在If條件中添加HTML標籤。 – SMC 2013-03-19 08:15:21

0

如果你想在JavaScript執行的邏輯:

if ('@Model.SomeFunctionEnabled' == 'True') { 
} 

但是,這會導致總是評估結果相同的情況。所以你最好在Darin的回答中對服務器進行整個測試。

如果您的測試是這樣的動態,那麼不能在服務器上執行。您可以通過使用@符號來獲取C#變量的內容。

@{ 
    var elementID = GetMyGeneratedElementID(); 
} 

<div id="@elementID">...</div> 
<script> 
    function MyAmazingJavascriptElementHandler() { 
     if ($("#@elementID").SomeTest()) { 
      DoMyAmazingJavascript(); 
     } 
    } 
</script>