【发布时间】:2015-04-27 23:42:35
【问题描述】:
尝试使用自定义处理程序将用户控件动态加载到 aspx 页面中。我正在关注http://blog.ovesens.net/2008/12/dynamically-loading-asp-net-user-controls-with-jquery/的示例
public class AjaxUserControlHandler : AjaxControlHandler
{
public override Control GetControl(HttpContext context)
{
// Get the path to the user control
string path = context.Request.Url.LocalPath;
using (var page = new Page())
{
var viewControl = page.LoadControl(path) as UserControl;
return viewControl;
}
}
}
using System.Web;
using System.Web.UI;
public class AjaxUserControlHandler : AjaxControlHandler
{
public override Control GetControl(HttpContext context)
{
// Get the path to the user control
string path = context.Request.Url.LocalPath;
using (var page = new Page())
{
var viewControl = page.LoadControl(path) as UserControl;
return viewControl;
}
}
}
using System;
using System.ComponentModel;
public class AjaxEnabledAttribute : Attribute
{
[DefaultValue(RequestMethodSupport.All)]
public RequestMethodSupport Method { get; set; }
}
public enum RequestMethodSupport
{
All,
GET,
POST
}
我的欢迎 Portlet 是
[AjaxEnabled]
public partial class WelcomePortlet : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
在我的 Web.Config 中
<httpHandlers>
<remove verb="*" path ="*.ascx"/>
<add verb="*" path="*.ascx" type="AjaxUserControlHandler"/>
</httpHandlers>
在我的 aspx 页面中。
$("#placeholder").load("Controls/WelcomePortlet.ascx");
但是控件没有加载。我在 AjaxUserControlHandler 和 AjaxUserControlHandler 中设置了断点,代码没有运行。
注意:AjaxControlHandler、AjaxEnabledAttribute 和 AjaxUserControlHanlder 位于 App_Code 文件夹中,并已标记为 Compile 而不是 Content。
我错过了什么?
谢谢。
【问题讨论】:
标签: javascript c# jquery asp.net httphandler