ASP.NET:动态生成HTML,如何?
去年我一直在做一些(开启和关闭)ASP.NET,但我从来没有遇到过这个挑战:我现在正在构建一个非常简单的网站,主要基于HTML和Javascript 。 但是,在一个页面上,我需要从服务器读取XML文件,解析它,从XML文件中包含的值创建HTML,并将其作为响应输出。 我将使用带有C#的ASP.NET。 我理解如何解析XML并在C#中生成HTML代码,但是如何将HTML代码写入响应/页面? 生成的动态HTML仅在页面中的一个大div中,页面的其余部分是静态的。 做这个的最好方式是什么? 因为我之前从未做过这样的事情,所以我猜测一种方法是清除页面的整个HTML源代码并使用Page_Load事件中的Response.Write()来编写整个HTML页面,已插入XML值。 这是正确的方法,如果是这样的话,你可以给我几行代码作为例子来确保我做得对吗? 谢谢!
另外,由于我以前从未有机会这样做,所以在服务器上的ASP.NET C#中读取文件的最佳方法是什么?
更新 :谢谢你的所有答案! 我找到了解决问题的方法,但提供的所有三个答案都是应对这一挑战的好方法。 正如你可以猜到的那样,给出接受的答案是一个艰难的选择,但是我会通过敬畏来回答这个问题 ,因为他显然付出了很多努力,这是一个非常优雅的解决方案,并且他回答了我的两个问题。 谢谢大家的精彩答案!
创建一个可在服务器代码中访问的div:
在Page_Load中:
xmlGeneratedContent.InnerHtml = parcedHtmlFromXml;
编辑:
作为对上一个问题的回答:如何读取服务器上的文件…
如果文件位于网站下,则可以使用Server.MapPath
从相对URL获取物理磁盘位置:
string filename = Server.MapPath("files/file.txt");
如何阅读它取决于它是什么类型的文件,以及你想如何阅读它。 如果您想将其作为纯文本阅读,请参阅以下方法:
一次阅读:
string content = System.IO.File.ReadAllText(filename);
一次读入包含这些行的字符串数组:
string[] content = System.IO.File.ReadAllLines(filename);
一次读一行:
System.IO.StreamReader sr = new System.IO.StreamReader(filename); while (!sr.EndOfStream) { string line = sr.ReadLine(); // or other method reading a block //Do something whith the line } sr.Close(); sr.Dispose();
在codebehindfunction中:
public string getHML() { return "htmltext"; }
在页面上:
<%=getHML()%>
只是为了增加多样性:我最喜欢的解决方案是使用
然后在代码中:
this.MyLiteral.Text = "Generated HTML goes here";
相对于
的优势在于它不会产生额外的HTML – 因此您可以将它放在任何您想要的位置并生成您想要的任何内容。
如果我可以轻松地在每个请求上重新生成内容,我通常也会在其上设置EnableViewState="false"
。 这会减少ViewState的大小,因为myLiteral.Text
也保存在ViewState中。
那么,你自己的建议肯定会奏效。 清除ASPX页面中的所有html,并在Page_Load事件中执行以下操作:
Response.Write(System.IO.File.ReadAllText(yourFilePath));
我不认为还有更多。