Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP.NET Webforms的条件响应_C#_Asp.net_.net_Webforms_Pjax - Fatal编程技术网

C# 使用ASP.NET Webforms的条件响应

C# 使用ASP.NET Webforms的条件响应,c#,asp.net,.net,webforms,pjax,C#,Asp.net,.net,Webforms,Pjax,在我的应用程序中,我使用pjax在页面上提供部分响应。据我所知,pjax需要相同的url用于部分响应和完整响应,例如,以下url用于服务用户列表: 全部答复: //YouTube网站/用户 部分响应: //youwebsite/用户(连同X-PJAX头) 如果使用X-PJAX标头请求url,则需要部分响应,即仅用户列表,而如果没有此类标头,则需要从服务器获得完整响应,即完整页面(标头、正文、页脚等以及用户列表) 为了实现这一点,我制作了一个http处理程序来处理这种条件响应。我制作了TestHa

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

全部答复: //YouTube网站/用户

部分响应: //youwebsite/用户(连同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;
        }
    }
}

#区域使用指令
使用制度;
使用System.Web;
使用System.Web.compilement;
使用System.Web.UI;
#端区
公共类TestHandler:IHttpHandler
{
公共void ProcessRequest(HttpContext上下文)
{
if(context.Request.Headers[“X-PJAX”]!=null)
{
键入page\u Type=BuildManager.GetCompiledType(“~/Templates/users.aspx”);
Page Page=(Page)Activator.CreateInstance(Page\u类型);
page.ProcessRequest(上下文);
}
其他的
{
键入page\u Type=BuildManager.GetCompiledType(“~/users.aspx”);
Page Page=(Page)Activator.CreateInstance(Page\u类型);
page.ProcessRequest(上下文);
}
}
公共布尔可重用
{
收到
{
返回false;
}
}
}
如果请求中存在X-PJAX头,上述代码将从Templates/users.aspx页面返回响应。Templates/users.aspx页面包含用户列表的html代码。 如果该标题不存在,我们需要给出完整的响应,该响应来自~/users.aspx页面

我的问题是:

  • 我的方法处理基于 标题。在实现pjax之前,我只有一个页面 “~/users.aspx”以提供完整响应。为了实现pjax I 已通过路由将请求转发到用户页至TestHandler,以便 TestHandler可以决定需要哪个响应

  • 我们能给你一部分吗 仅从“~/users.aspx”页面响应,无需实现 httphandler

  • 如何使用带有条件响应的ASP.NET webforms


  • 您可以在razor模板中移动条件,并根据该条件选择设置页面布局

    什么剃须刀模板?什么布局?这个问题没有提到这些,而是专门讨论Web表单。