我正在创建一个 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
) 并写入响应。
关于javascript - ASP.net javascript调用代码隐藏方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28563755/