ASP.net javascript调用代码behing方法

时间:2015-02-17 14:32:06

标签: javascript c# jquery asp.net

我正在创建一个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"  />

1 个答案:

答案 0 :(得分:3)

WebMethod无法直接与DOM进行交互。 WebMethods不在普通页面模型的范围内。

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

Web API

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)并写入响应。