如何从客户端JavaScript函数调用服务器方法后面的代码?

A. *_*her 36 .net javascript c# asp.net

我在ASPX页面中有一个HTML按钮单击事件的JavaScript函数.并在其代码页面后面的服务器方法.现在我想只在用户点击HTML按钮时用JavaScript函数调用服务器方法.

请不要更改此方案,也不要在回复时在aspx页面中使用任何asp.net contols.因为只允许HTML控件.谁可以帮我这个事 ?.提前致谢.急切地等待答案.

这是代码,

标记代码:

<script language="javascript" type="text/javascript">
    function btnAccept_onclick() {        
        var name;            
        name = document.getElementById('txtName').value;

        // Call Server side method SetName() by passing this parameter 'name'
</script>

<input type="button" id="btnAccept" value="Accept" onclick="return btnAccept_onclick()" />
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

public void SetName(string name)
{
    // Code for some functionality    
}
Run Code Online (Sandbox Code Playgroud)

Muh*_*tar 42

是的,你可以制作像...这样的网络方法

[WebMethod]
public static String SetName(string name)
{
    return "Your String"
}
Run Code Online (Sandbox Code Playgroud)

然后在JavaScript中调用它,比如

PageMethods.SetName(parameterValueIfAny, onSuccessMethod,onFailMethod);
Run Code Online (Sandbox Code Playgroud)

这也是必需的:

<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"></asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)

  • 启用 PageMethods 时是否存在任何安全问题?我想知道为什么默认情况下禁用它。 (4认同)
  • 能不能让答案更清楚一点! (2认同)

小智 26

在我的项目中,我们通常调用服务器端方法,如下所示:

在JavaScript中:

document.getElementById("UploadButton").click();
Run Code Online (Sandbox Code Playgroud)

服务器端控制:

<asp:Button runat="server" ID="UploadButton" Text="" style="display:none;" OnClick="UploadButton_Click" />
Run Code Online (Sandbox Code Playgroud)

C#:

protected void Upload_Click(object sender, EventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)


Pra*_*ana 6

如果你不想使用ajax而不是

Code behind 

void myBtn_Click(Object sender,EventArgs e)
{
   //SetName(name); your code
}


.aspx file

<script language="javascript" type="text/javascript">
    function btnAccept_onclick() {        
        var name;            
        name = document.getElementById('txtName').value;
        document.getElementById('callserver').click();
        // Call Server side method SetName() by passing this parameter 'name'
</script>


<div style="dispaly:none;">
  <input type="button" id="callserver" value="Accept" click="myBtn_Click" runat="server" />
</div>
<input type="button" id="btnAccept" value="Accept" onclick="return btnAccept_onclick()" />
Run Code Online (Sandbox Code Playgroud)

或使用页面方法

.cs file
[ScriptMethod, WebMethod]

   public static string docall()
   {
      return "Hello";
   }

.aspx file

<script type="text/javascript">
      function btnAccept_onclic() {
          PageMethods.docall(onSuccess, onFailure);
      }

  function onSuccess(result) {
          alert(result);
      }


      function onFailure(error) {
          alert(error);
      } 

</script>
Run Code Online (Sandbox Code Playgroud)

检查一下:http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx