我正在使用带有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)调用页面方法的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