如何在cshtml MVC3 Razor页面的javascript中嵌入c#代码

时间:2011-03-04 14:53:20

标签: javascript asp.net-mvc-3 razor

我如何在MVC2 aspx页面上执行相当于嵌入JavaScript的操作:

if (('<%= Model.SomeFunctionEnabled %>' == 'True')以及MVC3中Razor视图页面(cshtml)上的整个功能代码块?

类似的东西:

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

嵌入视图页面的HTML部分时效果很好。 感谢

2 个答案:

答案 0 :(得分:30)

为什么在服务器端执行此操作时在客户端进行测试,并在测试成功时包含javascript以相应地执行操作:

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

答案 1 :(得分:0)

如果你想在JavaScript中执行逻辑:

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

但是这会导致总是评估相同结果的条件。因此,对于Darin的答案,你可以更好地在服务器上进行整个测试。

如果您的测试是动态的,那么就无法在服务器上执行。您可以使用@符号获取C#变量的内容。

@{
    var elementID = GetMyGeneratedElementID();
}

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