我正在使用带有 vb.net 的 asp.net 4.0。我的 aspx 页面中有一个页面方法(静态 webmethod),我使用 jquery ajax 来调用它。最近我合并了一个母版页。而且我的代码不再起作用了。调试时,我注意到母版页会触发页面事件,但当我的页面独立时不会触发。
关于如何在调用页面方法时避免触发页面事件的任何想法。为什么在我们使用母版页时会触发页面生命周期事件,即使我们正在调用静态页面方法?
谢谢
编辑:这是我的标记的简短版本
1) MasterPage 非常基础,没有代码,只是makup。
2) 通过将标记放在 ContentPlaceHolders 中,ASPX 页面发生了一些变化:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="UserDetail.aspx.vb" Inherits="UIAdaptor.UserDetail" MasterPageFile="~/UserEditor/StaticPages.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<%--a couple of JS and CSS were moved to the masterPage--%>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<%--Same markup as before using MasterPage--%>
</asp:Content>
3)调用page方法的jquery
$.ajax({
type: "Post",
url: "../UserDetail.aspx/ValidateUser",
data: "{'v_strUserName':'" + v_strUserName + "','v_strEmailAddress':'" + v_strEmailAddress + "','v_strGuidCurrentUserID':'" + v_strGuidCurrentUserId + "','v_strAddedRights':'" + v_strAddedRights + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: false,
success: function(data) {...}
....
});
4) 页面方法
<WebMethod()> _
Public Shared Function ValidateUser(ByVal v_strUserName As String, _
ByVal v_strEmailAddress As String, _
ByVal v_strGuidCurrentUserID As String, _
ByVal v_strAddedRights As String) As String
Dim s As String = WebNavigator_Common.ValidateUser(v_strUserName, _
v_strEmailAddress, _
v_strGuidCurrentUserID)
Dim blnAskMetadataValidation As Boolean = AskMetadataRightGrantingValidation(v_strAddedRights)
Return s & ";" & blnAskMetadataValidation
End Function