使用 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 页面。
我的问题:
我的方法是否正确地处理基于的条件响应页眉。在实现 pjax 之前,我只有一个页面"~/users.aspx"给出完整的响应。为了实现 pjax I已通过路由将用户页面的请求转发到 TestHandler,以便TestHandler 可以决定需要哪个响应。
我们可以给部分仅从"~/users.aspx"页面响应而不实现httphandler?
您如何使用带有条件响应的 ASP.NET 网络表单?
您可以在 razor 模板内移动条件,然后选择根据该条件设置页面的布局。