通过jQuery加载ascx

Rai*_*ika 7 asp.net jquery webforms

有没有办法通过jQuery加载ascx文件?

更新:

感谢@Emmett和@Yads.我正在使用带有以下jQuery ajax代码的处理程序:

 jQuery.ajax({
    type: "POST",  //GET
    url: "Foo.ashx",
    data: '{}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response)
    {
        jQuery('#controlload').append(response.d); // or response
    },
    error: function ()
    {
        jQuery('#controlload').append('error');
    }
 });
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误.我的代码错了吗?

另一个更新:我正在使用

error: function (xhr, ajaxOptions, thrownError)
{
    jQuery('#controlload').append(thrownError);
}
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

无效的JSON:
Test =>(此测试是我的ascx中的标签)

和错误后的我的ascx文件!

另一个更新:

我的ascx文件是这样的:

<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true">
    <asp:ListItem>1</asp:ListItem>
    <asp:ListItem>2</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="Label1" runat="server">Test</asp:Label>
Run Code Online (Sandbox Code Playgroud)

但是当调用ajax我在asp中得到这个错误:(

必须将带有'DropDownList'类型的控件'ctl00_ddl'放在带有runat = server的表单标记内.

感谢@Yads.但他的解决方案只适用于html标签.

Vad*_*dim 12

建立艾美特的解决方案

public class FooHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/html";
        context.Response.Write(RenderPartialToString("Foo.ascx"));
    }

    private string RenderPartialToString(string controlName)
    {
        Page page = new Page();
        Control control = page.LoadControl(controlName);
        page.Controls.Add(control);

        StringWriter writer = new StringWriter();
        HttpContext.Current.Server.Execute(page, writer, false);

        return writer.ToString();
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

使用以下jquery请求

jQuery.ajax({
    type: "POST",  //GET
    url: "Foo.ashx",
    dataType: "html",
    success: function (response)
    {
        jQuery('#controlload').append(response); // or response
    },
    error: function ()
    {
        jQuery('#controlload').append('error');
    }
 });
Run Code Online (Sandbox Code Playgroud)