0

ページの読み込み時に条件チェックを行うビューがあります。

 if(model.count()>0){

 }

この条件が満たされた場合、JavaScript関数を呼び出したいと思います。どうすればこれを行うことができますか?

HTMLコントロール内でそれを行う方法は知っていますが、コントロールなしでこれを行うことはできますか?

または、JavaScriptでこのチェックを行うにはどうすればよいですか?したがって、ビューのモデルを参照する必要がありますか?

編集

これは私が今持っているものですが、関数は認識されていません:The name myfunction does not exist in the current context

<script>
    $(document).ready(function () {
        @if (Model.Count() > 0)
        {
           myfunction(Model.parameter);

        }
    });
</script>

編集

私はそれをに変更しました

@if (Model.Count() > 0)
{
<script type="text/javascript">

        $(document).ready(function () {
        myfunction(@Model.parameter);
     });

</script>
 }

しかし、機能していません。alert("test" + @Model.parameter).ready(function()) 内のようなものを試しても機能しません。

または、ビューにコードを記述する必要があります。関数を削除してビューで実行しようとしましたが、html 要素の id プロパティを変数に設定する方法が必要です。のようなものvar variable = Model.param1を持ってい<div id=variable></div>ます。しかし、id プロパティを変数に設定するにはどうすればよいでしょうか?

4

4 に答える 4

3

中括弧の間にJavaScriptを追加するだけです。したがって、使用している場合Razor

@if(model.count()>0){
    <script>
        // Javascript code here
    </script>
}

これにより、ページにjavascriptが追加され、ブラウザがページをレンダリングするときに実行されます。

ドキュメント全体の準備ができたら、このコードを実行することをお勧めします。jQueryを使用している場合は、次を使用してこれを行うことができます$(document).ready(function(){ /*Code goes here*/ });

于 2013-01-07T21:11:48.537 に答える
1

JavaScriptModel ( http://jsm.codeplex.com ) を使用すると、コントローラー アクションに次のコードを記述できます。

if (list.Count > 0)
{
    this.AddJavaScriptFunction("myjavascriptfunction", parameter);
}

ビューを変更する必要はなく、邪魔なインライン JavaScript もありません。

于 2013-01-08T10:28:38.770 に答える
0

レンダリングしない html 要素 (非表示の Div など) を使用して、 の値model.count、または true/false を書き込んで、model.count > 0その非表示の要素に含まれるかどうかを示すことができます。次に、JavaScript で隠し要素から値を取得し、条件を実行できます。

条件の適用にセキュリティ上の影響がある場合、これは明らかに適切ではありません。その場合は、'bPratik の提案の方が適切です。

于 2013-01-07T21:22:36.507 に答える
0

このようにスクリプトタグの外にif文を入れてみてください

@if (Model.Count() > 0)
{
    <script type="text/javascript">

            $(document).ready(function () {
            myfunction(@Model.parameter);
         });

    </script>
}
于 2013-01-07T21:53:12.883 に答える