使用 ASP.NET Web 表单的条件响应

本文关键字:条件 响应 表单 Web ASP NET 使用 | 更新日期: 2023-09-27 18:36:22

在我的应用程序中,我正在使用pjax在页面上提供部分响应。据我了解,pjax 需要相同的 url 进行部分和完整响应,例如以下用于服务用户列表的 url:

完整响应:您的网站/用户

部分响应:您的网站/用户(以及 X-PJAX 标头)

如果使用 X-PJAX 标头请求 url 则需要部分响应,即仅用户列表,而如果没有这样的标头,则需要来自服务器的完整响应,即整页(标题、正文、页脚等以及用户列表)。

为了实现这一点,我制作了一个 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;
        }
    }
}

如果请求中存在 X-PJAX 标头,则上面的代码返回来自模板/用户.aspx页面的响应。模板/用户.aspx页面包含用户列表的 html 代码。如果该标头不存在,我们需要给出完整的响应,该响应来自 ~/users.aspx 页面。

我的问题:

  1. 我的方法是否正确地处理基于的条件响应页眉。在实现 pjax 之前,我只有一个页面"~/users.aspx"给出完整的响应。为了实现 pjax I已通过路由将用户页面的请求转发到 TestHandler,以便TestHandler 可以决定需要哪个响应。

  2. 我们可以给部分仅从"~/users.aspx"页面响应而不实现httphandler?

  3. 您如何使用带有条件响应的 ASP.NET 网络表单?

使用 ASP.NET Web 表单的条件响应

您可以在 razor 模板内移动条件,然后选择根据该条件设置页面的布局。