web-dev-qa-db-ja.com

cshtml MVC3 RazorページのJavaScriptにc#コードを埋め込む方法

mVC2aspxページのJavaScriptに埋め込まれたこれと同等の方法を教えてください。

if (('<%= Model.SomeFunctionEnabled %>' == 'True')およびMVC3のRazorビューページ(cshtml)の関数コードブロック全体?

何かのようなもの :

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

これは、ビューページのHTML部分に埋め込まれている場合に正常に機能します。ありがとう

12
stan4th

サーバー側でこれを実行でき、テストが成功した場合に応じて動作するjavascriptを含めることができるのに、なぜクライアント側でテストするのか。

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

JavaScriptでロジックを実行する場合:

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

しかし、これは常に同じ結果に評価される状態になります。したがって、サーバーでテスト全体を実行するには、Darinの回答の方が適しています。

ただし、テストがこのような動的なものである場合、サーバー上で実行することはできません。 @記号を使用して、C#変数の内容を取得できます。

@{
    var elementID = GetMyGeneratedElementID();
}

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