2011-03-04 62 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>