【问题标题】:error in calling code behind C# method from javascript function从 javascript 函数调用 C# 方法后面的代码时出错
【发布时间】:2013-10-02 18:52:49
【问题描述】:

我有以下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”函数

【问题讨论】:

  • 您更喜欢使用 ajax 还是回发?

标签: javascript c#-4.0 code-behind


【解决方案1】:

几件事。

首先,您需要使用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
}

【讨论】:

    【解决方案2】:

    所有的服务器内联代码如&lt;%=setDone(123)%&gt;都是在页面生成期间执行的,它在JavaScript中的位置仅仅是因为你把它放在那里。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多