MVC:在视图中调用Javascript函数而不使用任何HTML控件

MVC:在视图中调用Javascript函数而不使用任何HTML控件,javascript,asp.net-mvc-3,function,model,Javascript,Asp.net Mvc 3,Function,Model,我有一个视图,当页面加载时,我在其中执行一些条件检查 if(model.count()>0){ } 然后,如果满足这个条件,我想调用一个javascript函数。请问我怎么做 我知道如何在html控件中实现这一点,但这可以在没有任何控件的情况下实现吗 或者我如何在javascript中执行此检查,从而必须引用视图的模型 编辑 这就是我现在所拥有的,但函数未被识别:名称myfunction在当前上下文中不存在 <script> $(document).ready(

我有一个视图,当页面加载时,我在其中执行一些条件检查

 if(model.count()>0){

 }
然后,如果满足这个条件,我想调用一个javascript函数。请问我怎么做

我知道如何在html控件中实现这一点,但这可以在没有任何控件的情况下实现吗

或者我如何在javascript中执行此检查,从而必须引用视图的模型

编辑

这就是我现在所拥有的,但函数未被识别:
名称myfunction在当前上下文中不存在

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

        }
    });
</script>

$(文档).ready(函数(){
@如果(Model.Count()>0)
{
myfunction(模型参数);
}
});
编辑

我把它改成了

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

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

</script>
 }
@if(Model.Count()>0)
{
$(文档).ready(函数(){
myfunction(@Model.parameter);
});
}
但不起作用。即使我在.ready(function())中尝试类似于
alert(“test”+@Model.parameter)
的操作,它也不会起作用


或者,我必须在视图中编写代码。我试图删除函数并在视图中执行它,但我需要一种将html元素的id属性设置为变量的方法。类似于
var variable=Model.param1
,然后具有
。但是如何将id属性设置为变量呢?

您只需在大括号之间添加javascript即可。因此,如果您使用的是
Razor

@if(model.count()>0){
    <script>
        // Javascript code here
    </script>
}
@if(model.count()>0){
//这里是Javascript代码
}
这将在页面中添加javascript,然后在浏览器呈现页面时执行javascript


一个好的实践是在整个文档准备就绪时执行此代码。如果您使用的是jQuery,那么可以使用
$(document.ready(function(){/*代码在这里*/})来实现这一点

您只需在大括号之间添加javascript即可。因此,如果您使用的是
Razor

@if(model.count()>0){
    <script>
        // Javascript code here
    </script>
}
@if(model.count()>0){
//这里是Javascript代码
}
这将在页面中添加javascript,然后在浏览器呈现页面时执行javascript


一个好的实践是在整个文档准备就绪时执行此代码。如果您使用的是jQuery,那么可以使用
$(document.ready(function(){/*代码在这里*/})来实现这一点

您可以使用非呈现html元素(例如隐藏的Div)并写出
model.count
的值,或者甚至是true/false来表示是否将
model.count>0
写入该隐藏元素。然后在JavaScript中,您可以从隐藏元素获取值并运行条件


显然,如果应用条件存在安全隐患,那么这是不合适的。如果是这种情况,那么“bPratik”的建议将更合适。

您可以使用非呈现html元素(例如隐藏的Div)并写出
model.count
的值,甚至是true/false来表示
model.count>0
是否进入该隐藏元素。然后在JavaScript中,您可以从隐藏元素获取值并运行条件


显然,如果应用条件存在安全隐患,那么这是不合适的。如果是这种情况,那么“bPratik”的建议更合适。

尝试将If语句放在脚本标记之外,如下所示

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

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

    </script>
}
@if(Model.Count()>0)
{
$(文档).ready(函数(){
myfunction(@Model.parameter);
});
}

尝试将if语句放在脚本标记之外,如下所示

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

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

    </script>
}
@if(Model.Count()>0)
{
$(文档).ready(函数(){
myfunction(@Model.parameter);
});
}
使用JavaScriptModel(),您可以在控制器操作中编写以下代码:

if (list.Count > 0)
{
    this.AddJavaScriptFunction("myjavascriptfunction", parameter);
}
您不需要修改视图,也不会有任何内联的阻碍性javascript。

使用JavaScriptModel(),您可以在控制器操作中编写以下代码:

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


您不需要修改视图,也不会有任何内联的干扰性javascript。

不清楚您想要实现什么。这种情况发生在服务器端还是客户端?(
model
在本例中听起来像是一个服务器端引用。)运行JavaScript代码不需要任何HTML元素,我不确定您为什么会这样想。您试图在JavaScript中执行什么检查?当我的视图加载时,我想运行一个JavaScript函数,该函数从视图的模型中获取参数。它是一个在js文件中定义的函数。该函数在同一js文件中使用其他函数。您是否有该文件的引用?是。视图的其他部分正在使用它。不清楚您试图实现什么。这种情况发生在服务器端还是客户端?(
model
在本例中听起来像是一个服务器端引用。)运行JavaScript代码不需要任何HTML元素,我不确定您为什么会这样想。您试图在JavaScript中执行什么检查?当我的视图加载时,我想运行一个JavaScript函数,该函数从视图的模型中获取参数。它是一个在js文件中定义的函数。该函数在同一js文件中使用其他函数。您是否有该文件的引用?是。视图的其他部分正在使用它是的,这是因为您可能在调用后定义了
myFunction()
,或者根本没有定义它!当上面的代码在viewok中时,它是在javascript文件中定义的,但是您能确定在这个函数之前浏览器正在执行该函数吗?它可能出现在这段代码之前,但实际上可能在这段代码之后执行。。。没有足够的代码让我为您检查!$(document).ready(function(){}中的所有其他函数都可以工作,但是对于使用模型的测试条件中包含的函数。好的,尝试一下这个来理解wha