代码之家  ›  专栏  ›  技术社区  ›  ElvisLives

在ASP.NET页内的某个文件中呈现静态HTML页或HTML标记

  •  1
  • ElvisLives  · 技术社区  · 15 年前

    我正在使用ASP.NET 3.5,希望将静态HTML文件的内容呈现到ASP.NET页中,该页在其中一个ContentPlaceholders中包含母版页。我已经考虑过使用iframe,但是如果可能的话,我想避免使用iframe。或者,如果简单一点,我只想在一个HTML文件中读取一些文本,比如:


    <table>
       <tr>
           <td>
            Hey dude
           <td>
       </tr>
    </table>
    
    <div>
       <span>I am special! </span>
    </div>
    

    并将其呈现到页面中的ContentPlaceholder中。我已经考虑了一个文本控件来实现这一点,但我也不确定这是否也能起作用。我试图解决的问题是,我希望能够让用户访问HTML页面或文本文件,并让他们用内容更新它。然后在运行时呈现此文件中的HTML标记。这是应用程序中我唯一需要此功能的页面,因此类似于CMS系统或HTML编辑器控件的功能过于强大。我只需要在文件中读取,并在ASP.NET页面中呈现HTML标记。另外,我希望呈现的标记使用我们已经拥有的CSS,但我认为这两种方式都是gimme。

    3 回复  |  直到 13 年前
        1
  •  3
  •   Robert Williams    15 年前

    我将从一个外部文本文件中读取文本,正如您在上面描述的那样,将其读到内存中,类似于Mikeb的解决方案中描述的内容,然后将其转换为一个LiteralControl,您可以将其添加到页面中。

    protected void Page_Load(object sender, EventArgs e)
    {
        LiteralControl literal = new LiteralControl( GetExternalHTML() );
        Page.Controls.Add(literal);
    }
    
    private string GetExternalHTML()
    {
         StreamReader sr;
         string html;
         sr = File.OpenText("<path_to_file.txt>");
         html = sr.ReadToEnd();
         sr.Close();
    
         return html;
    }
    
        2
  •  2
  •   Keith Adler    15 年前

    您可以使用服务器端包括:

    http://msdn.microsoft.com/en-us/library/3207d0e3(VS.71).aspx
    

    response.write文件 :

    http://support.microsoft.com/kb/306575
    

    因为它包含在您的页面中,所以它肯定会采用您正在使用的任何CSS样式。

        3
  •  0
  •   Chris Barlow Pete Lomax    13 年前

    如果你要去 Literal ,确保设置:

    literal.Mode = LiteralMode.PassThrough;
    

    否则,您可以创建一个 WebControl (或继承自 字面意义的 )处理此任务。然后您可以覆盖 Render(HtmlTextWriter writer) 或者类似于您自己的方法,检索需要呈现的文件,然后将其写入流。

    另一种选择可能是简单地调用 Page.Response.WriteFile(filename) . 不过,我不建议这样做,但这是一种选择。:)问题 Response 它不一定发生在你可能预料到的时候。