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

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

问题描述:

我有一个包含用户控件的页面。我们可以向usercontrol(.ascx)发出ajax请求吗?

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

我知道我可以对.aspx或.ashx做一个ajax请求;但是,是否可以直接访问.ascx?

在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; } 
    } 
} 
+0

在经典的asp.net m wrking意味着不可能没有设置处理程序? – vakas 2010-07-28 05:30:53

+0

设置一个处理程序或仅包含此控件的aspx页面。 – 2010-07-28 05:36:46

你可以包含什么,但用户控件一个简单的ASPX页面。

+0

我会说这是首选的方法。 – NotMe 2010-07-28 05:37:35