Include contents of an html page in an aspx page

If you are creating a new ASP.NET application, but have a huge collection of existing content in html files, one option is to move all the content into a database and generate pages dynamically. However, migration to a database can be a time-consuming task depending on the volume of content. So wouldn't it be easier to somehow import the relevant parts of the existing html pages into your aspx page?

The use of System.IO and regular expressions makes this a very easy task. Place a <asp:Literal> control (ID="htmlbody") on your page, and then use the following code to strip out everything up to and including the <body> tag (regardless of whether the tag contains additional attributes), and everything from the closing </body> tag onwards:

 StreamReader sr;
 string html;
 sr = File.OpenText("<path_to_file.htm>");
 html = sr.ReadToEnd();
 sr.Close();

 Regex start = new Regex(@"[\s\S]*<body[^<]*>", RegexOptions.IgnoreCase);
 html = start.Replace(html,"");
 Regex end = new Regex(@"</body[\s\S]*", RegexOptions.IgnoreCase);
 html = end.Replace(html, "");
 htmlbody.Text = html;

Date Posted:
Last Updated:
Posted by:
Total Views to date: 60702

3 Comments

- pranav

what does below code means?

"[\s\S]*<body[^<]*>"

- Mike

@pranav

It's part of a regular expression pattern. It attempts to locate the body tag in the html, and allows for cases where there might be inline styling or javascript onload function calls. Or indeed anything else.

- Jason

I have a aspx page where I have it inside of a master page. I want to add javascript but I know you can only do this in a html page. I am just wanting to know is ther a way to add javascript to a aspx page.
Add your comment

If you have any comments to make about this article, please use this form to do so. Make sure that your comment relates specifically to the article above. More general comments can be posted through the form on the Contact page.

Please note, all comments are moderated, and I end up deleting quite a lot. The kind of things that will ensure your comment is deleted without ever seeing the light of day are as follows:

  • Requests to fix your code (post a question to forums.asp.net instead, please)
  • Gratuitous links to your own site or product
  • Anything abusive or libellous
  • Spam

I do not pass email addresses on to spammers, so a valid one will assist me in responding to you personally if required.

Recent Comments

Benjamin 4/21/2015 4:57 AM
In response to Creating a Connection String and Working with SQL Server LocalDB
Hi Mike, great article. I am learning a lot. As commented @Evita, the &lt;Key> Data Annotation is I...

Wayne Hudson 4/20/2015 9:14 PM
In response to Inline Editing With The WebGrid
Thank you very much for your articles. They've helped me a lot. How would you handle inline such...

Dan 4/20/2015 5:01 PM
In response to Sessions in ASP.NET 5
Can I ask how these sort of options are affected by the IIS configuration options when hosted in be...

Shaheen 4/20/2015 3:36 PM
In response to Conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value
Perfect! Saved me from wasting hours....

Hisham Abdullah Bin Ateya 4/19/2015 7:21 AM
In response to Sessions in ASP.NET 5
FYI the Session.GetInt & Context.Session.SetInt have been renamed to Context.Session.GetInt32 &...

Philipp 4/18/2015 12:15 PM
In response to Creating Reusable Components For ASP.NET Razor Web Pages
Thank you very much for your articles. They are always good and interesting to read. In your last a...

Magnus 4/17/2015 10:13 AM
In response to Sessions in ASP.NET 5
One thing that took me a while to figure out, is that the UseSession() must come before UseMVC() in...

kaleem 4/16/2015 9:14 AM
In response to ASP.NET MVC, Entity Framework, One-to-Many and Many-to-Many INSERTS
hi this is very helpful ASP.NET MVC, Entity Framework, One-to-Many and Many-to-Many INSERTS if to...

cranston mason 4/16/2015 8:49 AM
In response to Managing Checkboxes And Radios In ASP.NET Razor Web Pages
How do you include a checkbox at the View module and send its values to controller to be processed?...

vamsi 4/15/2015 5:40 AM
In response to Sessions in ASP.NET 5
good article...