2015-01-06 4 views
1

В моем приложении я использую pjax для частичного ответа на странице. Насколько я понимаю, pjax нужно же URL для частичного, а также полный ответ, например, следующий URL для обслуживания списка пользователей:Условный ответ с ASP.NET Webforms

Полный ответ: // youwebsite/пользователей

Частичный ответ: // youwebsite/users (вместе с заголовком X-PJAX)

Если URL-адрес запрашивается с помощью частичного ответа заголовка X-PJAX, то есть только список пользователей, тогда как если такого заголовка не требуется, то от сервера требуется полный ответ, т. е. полный (заголовок, тело, нижний колонтитул и т. д. вместе с списком пользователей.)

Для этого я сделал обработчик http для обработки такого условного ответа. Я сделал свой TestHandler.ashx, чтобы сделать это:

<%@ WebHandler Language="C#" Class="TestHandler" %> 

#region Using Directives 

using System; 
using System.Web; 
using System.Web.Compilation; 
using System.Web.UI; 

#endregion 


public class TestHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     if (context.Request.Headers["X-PJAX"] != null) 
     { 
      Type page_type = BuildManager.GetCompiledType("~/Templates/users.aspx"); 
      Page page = (Page)Activator.CreateInstance(page_type);    
      page.ProcessRequest(context); 
     } 
     else 
     { 
      Type page_type = BuildManager.GetCompiledType("~/users.aspx"); 
      Page page = (Page)Activator.CreateInstance(page_type); 
      page.ProcessRequest(context); 
     } 
    } 

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

Приведенный выше код возвращает ответ со страницы/users.aspx Шаблоны, если заголовок X-PJAX присутствует в запросе. Страница Templates/users.aspx содержит код html для списка пользователей. Если этого заголовка нет, нам нужно дать полный ответ и который указан на странице ~/users.aspx.

Мои вопросы:

  1. мой подход правильно обрабатывать условную реакцию на основе заголовка. Перед реализацией pjax у меня была только одна страница «~/users.aspx», чтобы дать полный ответ. Для реализации pjax I перенаправили запрос на пользовательскую страницу TestHandler по маршрутизации, так что TestHandler может решить, какой ответ необходим.

  2. Можем ли мы дать частично ответ только с страницы «~/users.aspx» без внедрения httphandler?

  3. Как вы подходите с помощью веб-форм ASP.NET с условными ответами?

ответ

-1

Вы можете перемещать условие внутри шаблона бритвы и выбирать настройку макета страницы на основе этого условия.

+0

Какой шаблон бритвы? Какой макет? Этот вопрос не упоминает об этом и, в частности, говорит о веб-формах. – mason

+0

Вы правы. Виноват. – sanatgersappa