ASP.NET Webforms的条件响应

时间:2015-01-06 16:37:35

标签: c# asp.net .net webforms pjax

在我的应用程序中,我使用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页面给出的。

我的问题:

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

  2. 我们可以给予部分 只是从“〜/ users.aspx”页面响应而没有实现 HttpHandler的?

  3. 如何使用条件响应处理ASP.NET网页?

1 个答案:

答案 0 :(得分:-1)

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