C# 在aspx页面中存储大量序列化数据以在codebehind中读取的最佳实践?

C# 在aspx页面中存储大量序列化数据以在codebehind中读取的最佳实践?,c#,asp.net,serialization,deserialization,tridion,C#,Asp.net,Serialization,Deserialization,Tridion,使用CMS,网站地图页面上的网站地图部分的HTML将在网站地图页面发布时生成。因此,本质上,sitemap.aspx页面在我们的web服务器上是静态HTML: Sitemap.aspx: <ul> <li><a href="/">Home Page</a> <li><a href="/etc.aspx">etc</a> </ul> 这很好,但我们正在进行一场分离关注点的运动,并废除服务器端预

使用CMS,网站地图页面上的网站地图部分的HTML将在网站地图页面发布时生成。因此,本质上,sitemap.aspx页面在我们的web服务器上是静态HTML:

Sitemap.aspx:

<ul>
  <li><a href="/">Home Page</a>
  <li><a href="/etc.aspx">etc</a>
</ul>
这很好,但我们正在进行一场分离关注点的运动,并废除服务器端预先生成的HTML。因此,CMS现在正在生成在aspx页面上构建站点地图部分所需的JSON数据。因此,页面现在是动态的,具有如下嵌入式数据源:

[ { Title: "Home Page", Url: "/" }, { Title: "etc", Url: "/etc.aspx" } ]

<ul>
  <% foreach(var page in Pages) { %>
    <li><a href="<%: page.Url %>"><%: page.Title %></a></il>
  <% } %>
</ul>
这里的挑战是获取数据,将其反序列化为强类型对象

我探讨了:

将数据作为页面的字段插入,以便在代码隐藏中读取: 这使得:

或者也可以创建自定义用户控件来包装JSON,以便在代码中读取: @@立地树@@

这使得:

{大量json数据}

这样我就可以在后面的代码中抓住它:

    this.Data= container.Controls.OfType<LiteralControl>().FirstOrDefault().Text;
无论哪种情况,我在加载页面时都会遇到异常:

System.Web.HttpCompileException 0x80004005:0:错误CS1647:错误 表达式太长或太复杂,无法编译

我相信这是因为呈现的json字符串可能非常大;在1mb以上


因此,我的问题是,在aspx页面中存储大型呈现序列化数据的最佳实践/方法/指南是什么,以便在代码中读取和反序列化这些数据,并考虑到最佳性能?

aspx不打算以这种方式使用

我能想出的最好办法是——将CMS生成的内容作为XML文件使用,加载到codebehind中,根据需要缓存,并使用它为动态页面提供服务

var xml = @"<ul>
    <li><a href=""/"">Home Page</a></li>
    <li><a href=""/etc.aspx"">etc</a></li>
</ul>";

var document = XElement.Parse(xml); // You could use XElement.Load(Server.MapPath("~/App_Data/fileName.xml")) as well

this.Pages = document
    .Elements("li")
    .Select(li=>li.Element("a"))
    .Select(el=>new Page{Url = el.Attribute("href").Value, Title = el.Value}).ToList();