我有一个 aspx 页面。我已经添加了一个 ScriptManager 到它,并设置EnablePageMethods=true
,并在服务器端创建了一个标记为 [WebMethod] 的静态方法。
我一直使用 WebMethods,以前从未见过此错误。
在 javascript 上,可以访问 PageMethods。但是当我调用我的方法时,Page_Load
方法而不是 WebMethod 被触发。
我搜索了一下,发现其他人也有这个问题。但没有答案......有什么想法吗?
HTML:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
JS:
PageMethods.Test()
C#:
[WebMethod]
public static void Test()
{
}
因此,在找到更新面板中的控件调用回发两次的罪魁祸首后,我发现这是因为调用了页面方法。
找到 LcSalazar 解决方案后,我禁用了友好 URL,一切正常。但我发现友好的 URL 更干净,所以我找到了解决方案。
在您的主页上添加以下内容。
<script type="text/javascript">
$(function () {
try {
if (PageMethods.get_path().indexOf('.aspx') == -1)
PageMethods.set_path(PageMethods.get_path() + '.aspx');
} catch (e) {
}
})
</script>
一旦页面方法路径包含 .aspx,page_load 就不会再次触发。
或者考虑使用 ASP.Net Web Api 。当涉及可重用方法时,最好进行实践,而不是在基页或您尝试使用它的每个页面中声明方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)