重载页面以处理不同的浏览器类型
本文关键字:浏览器 类型 处理 重载 | 更新日期: 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,会话状态将在请求中可用