【问题标题】:How to embed c# code in javascript on cshtml MVC3 Razor page如何在cshtml MVC3 Razor页面上的javascript中嵌入c#代码
【发布时间】:2011-03-04 14:53:19
【问题描述】:

我将如何在 MVC2 aspx 页面上执行嵌入 JavaScript 的等效操作:

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

类似:

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

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

【问题讨论】:

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


    【解决方案1】:

    当您可以在服务器端执行此操作并包含 javascript 以在测试成功时采取相应措施时,为什么还要在客户端进行测试:

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

    【讨论】:

    • 感谢达林,有时我想将显示代码保留在视图中。然而,我已经意识到它只是 VS 的语法高亮,不能正常工作 - 它实际上很好!
    • @stan4th,好的,但是在您的 if 语句示例中,您将服务器端代码与 javascript 混合在一起,使其难以阅读。这就是我建议你改进的原因。
    • @DarinDimitrov - 我想呈现一些像下面这样的内联 HTML...&lt;script language="javascript"&gt; if (isOutside) { @{ //Some HTML inline tags should be here. } else { } &lt;/script&gt; 你能更正一下吗?我现在无法在 If 条件中添加 HTML 标签。
    • @SMC,我不明白你在问什么。 &lt;script&gt; 元素中有哪些 HTML 标签?
    • @SMC,这仍然不能回答我的问题:What HTML tags inside a &lt;script&gt; element?通常 HTML 标记放置在标记中,而不是脚本元素中。 script 元素用于 javascript 代码。
    【解决方案2】:

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

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

    但这会导致条件总是评估为相同的结果。因此,您最好使用 Darin 的答案在服务器上进行整个测试。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-26
      • 2012-02-10
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2019-03-07
      相关资源
      最近更新 更多