Можем ли мы сделать ajax-запрос к usercontrol (.ascx)? - PullRequest
0 голосов
/ 28 июля 2010

У меня есть страница с пользовательским элементом управления.

Могу ли я сделать ajax-запрос непосредственно к элементу управления?

Я знаю, что могу сделать ajax-запрос к .aspx или .ashx;однако можно ли перейти прямо к .ascx?

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

В приложении ASP.NET MVC да:

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

и затем отправить запрос AJAX:

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

загрузит частичное представление Foo.ascx внутри div.

В классическом приложении 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 голос
/ 28 июля 2010

Вы можете создать простую страницу ASPX, которая не содержит ничего, кроме пользовательского контроля.

...