我们可以向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; }
}
}
在经典的asp.net m wrking意味着不可能没有设置处理程序? – vakas 2010-07-28 05:30:53
设置一个处理程序或仅包含此控件的aspx页面。 – 2010-07-28 05:36:46