在C#代码中包含HTML文件

我有一个页面,里面有左菜单。 这个左侧菜单是一个HTML文件[LeftFrame.htm],使用以下代码包含在aspx页面中。

 

现在我需要从C#代码将文件名更改为LeftFrameOthers.htm。

例如:

 if ( arg == 1 ) { divMenu.InnerHTML = ""; } else { divMenu.InnerHTML = ""; } 

但它会产生错误,并且不会加载左侧菜单。 有没有办法从C#代码管理它。

我不想为此目的使用两个div。

 

并从C#代码更改div的显示属性。

我正在使用VS 2003

在ASP.NET中使用包含文件通常已被更强大的用户控件所取代。 这是使用包含文件的另一种选择:

ASPX:

  

代码背后:

 private string GetFrameContent(int arg) { string filename = (arg == 1) ? "LeftFrame.htm" : "LeftFrameOthers.htm"; string path = Server.MapPath("./" + filename); string content = System.IO.File.ReadAllText(path); return content; } // Populate Literal FrameLiteral.Text = GetFrameContent(arg); 

不像使用用户控件那样优雅,但它应该完成工作并且相对整洁。

您可以创建一组LeftFrame用户控件,您可以在代码隐藏中替换它们。 这样,您可以动态选择在运行时加载哪个控件。

例如 。 。 。

 ILeftFrame {} LeftFrame : ILeftFrame {} LeftFrameOthers : ILeftFrame {} 

然后,控制本身

 LeftFrameControl : System.Web.Ui.UserControl {} 

然后,在您的页面中,您有一个

 . 

该控件将具有一个属性,允许您指定正在使用的ILeftFrame,将加载它,执行适当的行为,以及所有在面向对象的世界中都很好。

一些肮脏的方式可能是做这样的事情:

 
<% if ( arg == 1 ) { %> "; <% } else { %> <% } %>

不完美,但快速,简单,并将做到这一点。

ASP.NET Literal Control似乎是出于此目的的理想选择。 代码几乎与您发布的内容完全相同:

标记

 

代码隐藏 (简化)

 menuLiteral.Text = String.Format("", (arg == 1) ? "" : "Others"; 

如果能做到这一点,请告诉我。

另一种选择可能是……

HTML:

 

你的C#代码:

 if ( arg == 1 ) { phContent1.Visible = true; } else { phContent2.Visible = true; }