重载页面以处理不同的浏览器类型

本文关键字:浏览器 类型 处理 重载 | 更新日期: 2023-09-27 18:19:06

所以我正在做客户端XSL转换。

如果有人请求Dashboard。它将创建所有XML数据,并按照约定包括对DashboardXSL的引用。XML中的aspx。然后将其发送到客户端并创建XHTML。

我所有的aspx页面,服务XML是从XMLPage而不是Page派生的,现在我只是设置在Page_PreLoad那里的内容类型。在实际的Page_Load中,页面的所有数据都在ITS Page_Load上收集,然后通过<%=XMLData%>

写入页面

我想做的是在过程中的某个时刻,我猜测我的XMLPage子类Page_Render[或PreRender]拦截所有累积的XML并做服务器端转换,并阻止页面被交付为asp.net通常会交付它。

有人知道怎么做吗?

提前感谢!这是我的XMLPage类我在这里添加了一些代码,这样你就可以可视化

        public class XMLPage : System.Web.UI.Page
    {
        protected void Page_PreLoad(object Sender, EventArgs e)
        {
            Response.ContentType = "text/xml";
            if (Request.Browser.IsBrowser("IE"))
            { //Just testing this out, not production code ! :p
                    Response.Write(@"<?xml 
version=""1.0"" encoding=""ISO-8859-1""?>
<oohru>Browser is IE</oohru>");
                    Response.End();
                    Response.Flush();
                }
            }
        }

这里是Dashboard.aspx

    <%@ Page Title="Oohru Dashboard" Language="C#"  AutoEventWireup="true" 
EnableViewState="false"
    CodeBehind="Dashboard.aspx.cs" Inherits="OohruWeb.Dashboard"
 MasterPageFile="~/MasterPages/LoggedInXML.Master" %>
<asp:Content ContentPlaceHolderID="XMLPageData" runat="server">
    <%=DashboardBlogs%>
</asp:Content>

下面是Dashboard.aspx.cs

后面的代码
    public partial class Dashboard : OohruWeb.PageOverloads.XMLPage
    {
        public string DashboardBlogs="";
        protected void Page_Load(object sender, EventArgs e)
        {
            DbaseExecSpWithRecordset Sproc = new DbaseExecSpWithRecordset();
            Sproc.SetSp("sproc_GetBlogPostsForDashboard");
            Sproc.AddParam("UserID", System.Data.SqlDbType.UniqueIdentifier, 
(Guid)Membership.GetUser().ProviderUserKey);
            SqlDataReader Dreader = Sproc.Execute();
            while (Dreader.Read())
            {
                DashboardBlogs += Dreader[0].ToString();
            }
            Dreader.Close();
            Sproc.Close();
            Sproc = null;
        }

XSL文件是DashboardXSL。Aspx,母版页在名称约定上又知道提供这个。它太大了,不方便张贴。

重载页面以处理不同的浏览器类型

如果页面的唯一目的是呈现XML,那么使用HTTPHandler可能会更好。

实际上,您可以用同名的虚拟页替换现有的物理页。您可以生成XML,转换它,并将其作为响应发送回客户端,而不必担心aspx管道。

如果你需要使用会话状态,你可以在处理程序中实现System.Web.SessionState.IRequiresSessionState,会话状态将在请求中可用