在我的应用程序中,我使用pjax在页面上提供部分响应。据我所知,pjax需要相同的url用于部分和完整响应,例如以下用于提供用户列表的URL:
完整回复: // youwebsite / users
部分回复: // youwebsite / users(以及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标头,则上述代码将返回Templates / users.aspx页面的响应。 Templates / users.aspx页面包含用户列表的html代码。 如果那个标题不存在,我们需要给出完整的响应,这是从〜/ users.aspx页面给出的。
我的问题:
我的方法是否正确处理基于的条件响应 头。在实现pjax之前,我只有一个页面 “〜/ users.aspx”给出完整的回复。为了实现pjax我 已经通过路由将请求转发到用户页面到TestHandler,以便 TestHandler可以决定需要哪个响应。
我们可以给予部分 只是从“〜/ users.aspx”页面响应而没有实现 HttpHandler的?
如何使用条件响应处理ASP.NET网页?
答案 0 :(得分:-1)
您可以在剃刀模板中移动条件,然后根据该条件选择设置页面布局。