在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; }