我们可以向usercontrol(.ascx)发出ajax请求吗?

时间:2010-07-28 05:20:32

标签: javascript asp.net ajax ascx

我有一个包含用户控件的页面。

我可以直接向控件发出ajax请求吗?

我知道我可以向.aspx或.ashx发出ajax请求;但是,是否可以直接转到.ascx?

2 个答案:

答案 0 :(得分:2)

在ASP.NET MVC应用程序中是:

public ActionResult Foo()
{
    return PartialView();
}

然后发送AJAX请求:

$('#someDiv').load('/home/foo');

将在div中加载Foo.ascx局部视图。

在经典的ASP.NET WebForms应用程序中,您需要设置一个通用处理程序,将用户控件的内容呈现到响应中。以下是可以使用的通用处理程序的示例:

public class Handler1 : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        using (var writer = new StringWriter())
        {
            Page pageHolder = new Page();
            var control = (UserControl)pageHolder.LoadControl("~/foo.ascx");
            pageHolder.Controls.Add(control);
            context.Server.Execute(pageHolder, writer, false);
            context.Response.ContentType = "text/html";
            context.Response.Write(writer.GetStringBuilder().ToString());
        }
    }

    public bool IsReusable
    {
        get { return false; }
    }
}

答案 1 :(得分:1)

您可以创建一个只包含usercontrol的简单ASPX页面。