【问题标题】:Loading web user controls from blob storage in asp.net从 asp.net 中的 blob 存储加载 Web 用户控件
【发布时间】:2011-11-24 04:33:17
【问题描述】:

我将用户控制文件存储在其他位置,可能在 blob 存储或其他位置。 (不在我的项目工作空间中)并且我将用户控件的 url 存储在数据库中。现在如何将此用户控件加载到我的网页?

【问题讨论】:

  • 你尝试了什么?您如何将这些控件加载回内存?用什么格式?

标签: c# asp.net azure-blob-storage


【解决方案1】:

我使用以下方法来加载 .ascx 控件。事实上,我已将 .ascx 文件保存到“文本”字段中。

首先我在 web.config 文件中注册了一个控件:

<pages>
  <controls>
    <add  tagPrefix="tab" src="~/pg.ascx" tagName="Test"/>
  </controls>
</pages>

在webform中,我从数据库中读取.ascx内容,保存到根目录下的pg.ascx,动态加载用户控件。

Control t = LoadControl("~/pg.ascx");
PlaceHolder1.Controls.Add(t);

编辑: 我正在添加一个已存储到 StringBuilder 对象中的用户控件定义。

System.Text.StringBuilder sb = new System.Text.StringBuilder();
 sb.Append("<%@ Control Language=\"C#\" ClassName=\"m1\" %>");
 sb.Append("<script runat=\"server\">");
 sb.Append("int no=10;");
 sb.Append("public void page_load(){ for(int i=1;i<=no;i++) { Response.Write(i);} }");
 sb.Append("</script>");
 sb.Append("<h1>Hello</h1>");

 System.IO.File.WriteAllText(MapPath("~/pg.ascx"), sb.ToString());
 Control t = LoadControl("~/pg.ascx");
 PlaceHolder1.Controls.Add(t);

【讨论】:

  • 这里的“~/pg.ascx”是虚拟路径对吗? ,但我将我的用户控件存储在其他位置(blob 存储)而不是网站的文件夹中
  • 是的,它是虚拟文件,ASP.NET 不会抱怨该文件 (.ascx) - 无论它是否存在。
  • 但是我的 .ascx 文件不在 root 下。它在项目文件夹之外
  • 该文件的存储位置无关紧要,但事实是您必须将其复制或创建(网络用户控件)到当前应用程序中。
  • 我不能将我的用户控件捆绑在一个 dll 中并从 dat 加载。我将这种技术用于 BO 类。由于它们位于类库中,因此我从使用 activator .createinstance 创建的程序集中加载它们。我不能这样做吗?我不能这样做,因为这是一个 web 应用程序内的 ui 文件。有没有办法以这种方式实现?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 2012-10-31
  • 2021-07-25
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
相关资源
最近更新 更多