Coolite调用母版页里的方法
在UserControl(ascx),MasterPage或者Page(aspx)中使用Coolite的AjaxMetod讲究是不同的,在MasterPage中或者你在类似DotNetNuke的系统中调用AjaxMetod标志的方法,默认情况下是会找不到方法的,
处理此类问题需要使用AjaxMethodProxyID,使用的方法是在类的前面加上,如下
代码
代码
处理此类问题需要使用AjaxMethodProxyID,使用的方法是在类的前面加上,如下
[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.None)]
partial class ModuleRightManager : PortalModuleBase
partial class ModuleRightManager : PortalModuleBase
在有MasterPage页面或者在类似DotNetNuke的CMS系统下使用Coolite的AJAXMethod,建议你在页面的前部加上:
[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.ClientID)]
public partial class PopupCustomerDetail : PortalModuleBase
public partial class PopupCustomerDetail : PortalModuleBase
例子:
母版页.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Coolite.Ext.Web;
[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.None)]
public partial class Base : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
[AjaxMethod]
public string PageMethod()
{
return "调用了模板页的方法PageMethod();";
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Coolite.Ext.Web;
[AjaxMethodProxyID(IDMode = AjaxMethodProxyIDMode.None)]
public partial class Base : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
[AjaxMethod]
public string PageMethod()
{
return "调用了模板页的方法PageMethod();";
}
}
内容页:

<%@ Page Title="" Language="C#" MasterPageFile="~/Base.master" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<%@ Register assembly="Coolite.Ext.Web" namespace="Coolite.Ext.Web" tagprefix="ext" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<ext:ScriptManager ID="ScriptManager1" runat="server" />
<ext:Button ID="Button1" runat="server" Text="点我">
<Listeners>
<Click Handler="
Coolite.AjaxMethods.PageMethod({
success: function(result) {
Ext.Msg.alert('提示信息', result);
}
});" />
</Listeners>
</ext:Button>
</asp:Content>
<%@ Register assembly="Coolite.Ext.Web" namespace="Coolite.Ext.Web" tagprefix="ext" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<ext:ScriptManager ID="ScriptManager1" runat="server" />
<ext:Button ID="Button1" runat="server" Text="点我">
<Listeners>
<Click Handler="
Coolite.AjaxMethods.PageMethod({
success: function(result) {
Ext.Msg.alert('提示信息', result);
}
});" />
</Listeners>
</ext:Button>
</asp:Content>
以下是几种AjaxMethodProxyID 的区别:
1. None - 命名前缀是空的,调用方法时直接使用 Coolite.AjaxMethods.ajaxMethod(...)
2. ClientID - 命名前缀需要加上当前类控件的client id(客户端前缀) ,如Coolite.AjaxMethods.ctl00_UC1.ajaxMethod ,当然通常情况下我们Coolite.AjaxMethods.<%=this.ClientID>.ajaxMethod(...)
3. ID - 使用当前控件ID作为前缀, Coolite.AjaxMethods.UC1.ajaxMethod(...)
4. Alias - 使用别名做前缀,你可以声明自己的一个别名, Coolite.AjaxMethods.myAlias.ajaxMethod(...)
5. AliasPlusID - 别名和ID同时使用,如 Coolite.AjaxMethods.myAliasUC1.ajaxMethod(...)
分类:
CooliteToolkit
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南