Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript onload MVC ASP.NET MVC_Javascript_C#_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript onload MVC ASP.NET MVC

Javascript onload MVC ASP.NET MVC,javascript,c#,jquery,asp.net,asp.net-mvc,Javascript,C#,Jquery,Asp.net,Asp.net Mvc,正在尝试在网页加载时停止此代码段的运行 <input type="submit" class="btn btn-info col-md-pull-4" value="Download" id="mybutton" onclick="myFunction"> <script type="text/javascript"> function myFunction() { document.getElementById("mybutton") = @api.funct

正在尝试在网页加载时停止此代码段的运行

<input type="submit" class="btn btn-info col-md-pull-4" value="Download" id="mybutton" onclick="myFunction">

<script type="text/javascript">
function myFunction() {
    document.getElementById("mybutton") = @api.function();
}
</script>

函数myFunction(){
document.getElementById(“mybutton”)=@api.function();
}
无论何时加载页面,都会连接到web api并启动api.function代码。我只想在点击我的按钮时发生这种情况


我这样做是错误的吗?

我不明白您为什么要调用服务器方法onload?你不能从一开始就加载你需要的数据吗

在任何情况下,jquery的替代方案都是:

$("#mybutton").on("click", function(){
   // call server
})

这是因为Razor呈现@api.function(),呈现的结果是函数的执行。你能解释一下什么是@api.function()以及它的作用吗?

来自评论:

保罗:它(
@api.function()
)在外部程序中执行工作流。基本上只是在不同的应用程序中启动一个进程。是否只有在我单击按钮时,才能在页面加载时停止Razor渲染

简短回答-否。您混淆了服务器端和客户端代码。这是有区别的。服务器端代码在模型、控制器和razor视图中执行。客户端代码在web浏览器的上下文中使用JavaScript执行,但此代码无法访问服务器端代码/进程。它拥有的唯一访问权限与从浏览器运行的任何内容相同,它使用URL和传入的数据对服务器进行HTTP调用

如果希望调用
@api.function()
,请单击以下选项:

  • 回发-创建回发/提交,并从MVC控制器开始此过程。在这种情况下,请完全删除客户机脚本标记,并依靠服务器代码启动进程
  • 在现有MVC控制器或新的Web API控制器中创建新的公共方法。使用
    HttpPost
    属性标记此方法,然后使用调用调用它。这将允许在不需要表单张贴的情况下提交呼叫
    我认为你没有包括所有的代码,因为只有当你根据你发布的内容点击按钮时,这个函数才会被调用。如果您想知道调用它的是什么,那么请查看执行时的堆栈跟踪。为此,在函数中添加新行并编写
    调试器,然后在打开开发人员/调试工具的情况下在所选浏览器中加载该页面,此时应停止脚本执行。然后查看堆栈跟踪并找出调用的原因。此外,我/我们不知道
    @api.function()
    的作用,您确定对api的调用不是从服务器而不是从客户端进行的吗?问题是,服务器端代码运行时会调用服务器端代码
    @api.function()
    。在浏览器中查看源代码(打开页面,查看源代码)-您将看到
    @api.function()
    的结果嵌入到源代码中。不清楚您试图做什么,因为您无法将
    分配给document.getElementById(“mybutton”)
    (尝试设置html?标题?开始下载?),但您还没有做到这一点(也不包括onclick上缺少的
    ()
    )。在onclick中,您应该对服务器端api函数进行ajax调用-关于如何实现这一点,有很多答案,但是没有更多关于您正在尝试做什么/api返回什么的信息。您最初的问题有更具体的代码,更容易编写答案。您应该在问题中发布这些代码。它执行在一个外部程序中创建一个工作流。基本上只是在另一个应用程序中启动一个进程。是否只有在我单击按钮时才停止Razor在页面加载时渲染它?@Paul-否。你会将客户端代码与服务器端代码混淆。你不能混合使用2。好吧,也许这可以更好地解释:在页面加载时,我初始化与应用程序的连接。我希望页面加载页面上的html。页面上有一个按钮。单击此按钮时,我希望Web服务执行一个功能。代码:webservice client=new webservice();function myFunction(){document.getElementById(“myButton”)=@client.executeObject();}好的,我现在明白了。谢谢@Igor