【问题标题】:Dynamic Loading of ASP.NET Control using Handler Not working使用处理程序动态加载 ASP.NET 控件不起作用
【发布时间】: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


    【解决方案1】:

    您使用的是哪个版本的 IIS?您还需要在 Web.config 中配置 IIS 处理程序映射或 WebServer 部分。

    https://msdn.microsoft.com/en-us/library/bb515343(v=vs.140).aspx http://www.iis.net/learn/develop/runtime-extensibility/developing-iis-modules-and-handlers-with-the-net-framework

    【讨论】:

    • IIS7.我遵循了建议的这一部分,但会尝试另一部分以防万一。 “对于在集成模式下运行的 IIS 7.0 中为自定义扩展提供服务的处理程序,只需要在处理程序元素中进行注册。如果您还想在 httpHandlers 元素中保留注册,请在 system.webServer 部分中创建一个验证元素(如果它不存在)并将其 validateIntegratedModeConfiguration 属性设置为 false。”感谢您的帮助。
    • 很高兴我的回答对您有所帮助。我是新手。请接受并宣传答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    相关资源
    最近更新 更多