繁体   English   中英

从javascript函数调用C#方法背后的代码时出错

[英]error in calling code behind C# method from javascript function

我有以下的Java脚本功能

<script type="text/javascript">
          function taskDone(taskID) {

              alert(taskID);

              var btn = document.getElementById('btn-taskDone-' + taskID);
              var icon = document.getElementById('task-icon-' + taskID);

              btn.style.color = '#8F9199';
              btn.onclick = "";
              btn.style.cursor = 'default';
              icon.src = "./../Images/Icons/doneTask.png";                  

              '<%=setDone(123)%>'

          }

</script>

和下面的方法后面的代码

 public Boolean setDone(int taskID)
    {
        BO.taskDao myTask = new BO.taskDao();
        Boolean success = myTask.setDone(1, taskID);
        return success;
    }

而且我想从javascript函数调用setDone方法并传递taskID而不是123,但是我现在不知道该怎么做。 而且我不知道为什么服务器在页面加载后没有调用taskDone“ JavaScript”函数的情况下自动运行此脚本脚本'<%= setDone(123)%>'

一些事情。

首先,您需要使用WebMethod属性来修饰您的方法,并将其设置为static 尝试这个:

[WebMethod]
public static Boolean setDone(int taskID)
{
    BO.taskDao myTask = new BO.taskDao();
    Boolean success = myTask.setDone(1, taskID);
    return success;
}

现在,确保您具有ScriptManager

<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"> </asp:ScriptManager>

然后在JavaScript中,您可以通过以下方式调用它:

PageMethods.setDone(taskID, onSuccessMethod,onFailMethod);

同时也有成功和失败方法(上面已传递):

function onSuccessMethod(success) {
    //query success
}

function onFailMethod() {
    //check failure
}

所有服务器内联代码(例如<%=setDone(123)%>都是在页面生成期间执行的,它在JavaScript中的位置仅仅是因为您将其放置在页面中。

您可以使用内联代码以这种方式将服务器端数据传递 JavaScript。

如果希望JavaScript执行服务器端代码,则可以使用多种技术。 就像mattyTommo所描述的WebMethods一样,您可以在输入框中输入一个值,然后为服务器端按钮单击按钮并让服务器端代码读取输入框的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM