Skip to main content
 首页 » 编程设计

javascript之ASP.net javascript调用代码隐藏方法

2024年08月06日42shangdawei

我正在创建一个 asp.net web 应用程序,我想知道如何在 javascript 中调用代码隐藏方法。以下 Java 脚本显示将多个具有相同名称的文本框的值获取到数组中。

使用代码隐藏方法,我尝试传递数组的值,但没有成功。当我使用警告框时,它显示文本框值。

function JavaScriptFunction() { 
        var arr = $("input[name='multiple[]']"); 
        $.each(arr, function (i, item) { 
            alert($(item).val());              
        }); 
    } 

当我在警告框方法之前调用代码隐藏方法时,它不会显示任何消息框。 (方法背后的测试代码)

function JavaScriptFunction() { 
        var arr = $("input[name='multiple[]']"); 
        $.each(arr, function (i, item) { 
            PageMethods.setemail("Paul Hayman"); 
            alert($(item).val());                
        }); 
    }  

这是我的测试代码隐藏方法。我仅用于测试的 TextBox1。

  [WebMethod] 
    public void setemail(string p) 
    { 
        TextBox1.Text = p; 
    } 

最后我导入了 webService 引用。

  using System.Web.Services; 

这是我用 webforms 做的按钮

 <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="JavaScriptFunction()" OnClick="Button1_Click"  /> 

请您参考如下方法:

WebMethod 不能直接与 DOM 交互。 WebMethods 超出了普通页面模型的范围。

其实WebMethod就是no longer supported由 MS,你不应该使用它。相反,如果您使用的是 .NET 4.5,则可以创建 Web API并使用 AJAX 调用它(jQuery 对此有很好的辅助函数,我看到你标记了它)。 Web API 将返回字符串,然后您可以使用 JavaScript 设置文本框的文本。

网络应用程序接口(interface)

public class TestController : ApiController 
{ 
    public string GetHello(string name) 
    { 
         return String.Format("Hello, {0}!", name); 
    } 
} 

然后是 jQuery AJAX 代码:

$.ajax({ 
    url: '/api/test/GetHello?name=Nade', 
    type: 'GET' 
}) 
.success(function(output){ 
    $('#TextBox1').val(output); 
}); 

如果您使用的不是 .NET 4.5,请升级!如果无法升级,那么您可以设置一个通用处理程序 (.ashx) 并写入响应。