ASP.NET dynamically generate HTML pages

zhaozj2021-02-16  48

Introduction

This feature applies to a Web site that is not strong in the background database, that is, most of the text is not stored in the database, but placed in an HTML file or XML file, just put the index into the database, such as articles title, category, Query keywords, etc.. This is suitable for a web site that does not have database support such as MS SQL Server such as MS SQL Server.

Suitable for news distribution systems, such as Sina, 163, etc., are dynamically generated by HTML pages.

Suitable for programs that require dynamic custom pages. For example, forum, chat room, etc. You can load custom HTML pages to strengthen your appearance.

Think

1. Use tools such as DW-MX to generate a template of the HTML format, add special tags (such as $ HTMLFORMAT $) where you need to add formats, dynamically generate files to read this template when you use the code, then get the contents of the front desk, Add to this template's tag position, generate a new file name and write the disk, and write related data to the database after writing.

2. Use the background code hard to encode the HTML file, you can use the HTMLTextWriter class to write the HTML file.

advantage

1. You can create a very complex page, using methods containing JS files, join the document.write () method in the JS file can be added to all pages, advertising, etc.

2. Static HTML file Use the MS Windows2000 INDEX Server to establish a full-text search engine, using ASP.NET to get search results in a DataTable method. The Win2000's INDEX service cannot find the content of the XML file. This search feature will be very powerful if the database search is included with the INDEX index.

3. Save the server's load, request a static HTML file to save a lot than an ASPX file server resource.

Disadvantage

Idea 2: If you use hard-coded way, the workload is very large, you need a lot of HTML code. Difficulties in debugging. Moreover, the HTML style generated by hardcod cannot be modified. If the site is replaced, then you must re-encode, bringing huge effort to the later period.

So this is the first idea

Library code

1. Define (Template.htm) HTML Template Page

</ title></p> <p><meta http-equiv = "content-type" content = "text / html; charSet = GB2312"></p> <p></ hEAD></p> <p><body></p> <p><table $ htmlformat [0] height = "100%" border = "0" width = "100%" cellpadding = "10" cellspacing = "0" bgcolor = "# eeeeee" style = "Border: 1px solid # 000000" ></p> <p><tr></p> <p><td width = "100%" valign = "middle" align = "left"></p> <p><span style = "Color: $ HTMLFORMAT [1]; Font-size: $ HTMLFORMAT [2]> $ HTMLFORMAT [3] </ span></p> <p></ td></p> <p></ TR></p> <p></ TABLE></p> <p></ body></p> <p></ html></p> <p>2.asp.net code:</p> <p>// --------------------- Read the HTML template page to the StringBuilder object ---- string [] format = new string [4]; // definition and An array of HTMLYEM tags</p> <p>Stringbuilder HTMLText = New StringBuilder ();</p> <p>Try</p> <p>{</p> <p>Using (StreamReader SR = New StreamReader ("Path and Page Name of the Template page")))))</p> <p>{</p> <p>String line;</p> <p>While (line = sr.readline ())! = null)</p> <p>{</p> <p>HtmlText.Append (line);</p> <p>}</p> <p>sr.close ();</p> <p>}</p> <p>}</p> <p>Catch</p> <p>{</p> <p>Response.write ("<script> Alert ('Read file error') </ script>");</p> <p>}</p> <p>// -------------------- give the marker array value ------------</p> <p>Format [0] = "Background = /" bg.jpg / ""; // background picture</p> <p>Format [1] = "# 990099"; // font color</p> <p>Format [2] = "150px"; // Font size</p> <p>Format [3] = "<Marquee> generated template HTML page </ marquee>"; // Text description</p> <p>/ / ---------- Replace the mark in HTM for you to add content</p> <p>For (int i = 0; i <4; i )</p> <p>{</p> <p>HTMLText.replace ("$ HTMLFORMAT [" "]", Format [i]);</p> <p>}</p> <p>// ---------- Generate HTM files --------------------</p> <p>Try</p> <p>{</p> <p>Using (streamwriter sw = new streamwriter ("Storage Path and Page Name", False, System.Text.Encoding.Getencoding ("GB2312"))))</p> <p>{</p> <p>SW.writeLine (HTMLText);</p> <p>Sw.flush ();</p> <p>SW.CLOSE ();</p> <p>}</p> <p>}</p> <p>Catch</p> <p>{</p> <p>Response.write ("The File Could NOT BE WIRTE:");</p> <p>}</p> <p>summary</p> <p>Use this method to easily generate an HTML file. The program uses a loop replace, so the template speed that needs to replace a large number of elements is very fast.</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-21179.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="21179" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.034</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'm7I9frqbuUPzR1DcaIxPbX_2B66nZAkM_2BAGuOOIy7qmsEIu1YLJAEbPmXadLRx7S_2F3D7AZOgl35vzk_2BmIO2VPZjg_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>