0

我正在使用带有 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
4

0 回答 0