Условный ответ с веб-формами ASP.NET

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

Полный ответ: //ваш сайт/пользователи

Частичный ответ: //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;
        }
    }
}

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

Мои вопросы:

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

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

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


person Rocky Singh    schedule 06.01.2015    source источник


Ответы (1)


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

person sanatgersappa    schedule 31.01.2015
comment
Какой шаблон Razor? Какой макет? В этом вопросе о них не упоминается, и в частности речь идет о веб-формах. - person mason; 09.03.2017