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