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 回答