定义类来生成HTML文件
本文关键字:HTML 文件 定义 | 更新日期: 2023-09-27 18:08:52
我正在尝试使用类生成HTML文件,但它不生成多个HTML标签,我想知道你是否能告诉我我能做些什么,以便在我的HTML文件中生成多个标签。下面是代码:
public class GuidClass
{
public string htmlstringfirst = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY>";
public string htmlstringend = "</form></BODY></HTML>";
public string htmlstring = "";
public GuidClass(string title, string type, string defaultvalue)
{
htmlstring += "'r'n<input id = " + '"' + System.Guid.NewGuid().ToString() + '"' + "title =" + '"' + title + '"' + "type=" + '"' + type + '"' + ">" + defaultvalue + "</input><br>";
}
}
private void button1_Click(object sender, EventArgs e)
{
GuidClass objGuid = new GuidClass(textBox1.Text, textBox2.Text, textBox3.Text);
using (FileStream fs = new FileStream(@"D:'test.htm", FileMode.Create))
{
using (StreamWriter writer = new StreamWriter(fs, Encoding.UTF8))
{
writer.Write(objGuid.htmlstringfirst + objGuid.htmlstring + objGuid.htmlstringend);
}
}
htmlLoadWebbrowser1.LoadHTML(@"D:'test.htm");
}
使用web-browser
控件代替这种情况您可以轻松地将元素插入到web- browser
作为子元素,使用web浏览器您有很多优势。
你可以建立你的页面和保存HTML页面。这是一个简单的例子,但你可以做更多:
//From.cs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Html_Class _Html_Class = new Html_Class();
private void Add_Element_Click(object sender, EventArgs e)
{
HtmlElement userelement = _Html_Class.Create_Tag("p");
userelement.InnerText = "Something";
_Html_Class.Addend_Child(userelement);
var s = _Html_Class.Get_Source();
}
}
//Html_Class.cs
public class Html_Class
{
private WebBrowser wb = new WebBrowser();
public Html_Class()
{
wb.DocumentText = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY></BODY></HTML>";
}
public HtmlElement Create_Tag(string tagname)
{
return wb.Document.CreateElement("tagname");
}
public void Addend_Child(HtmlElement element)
{
wb.Document.Body.AppendChild(element);
}
public string Get_Source()
{
return (wb.Document.DomDocument as mshtml.HTMLDocument).documentElement.outerHTML;
}
}
为什么不使用WebBrowser控件,而不是像这样调用它:
htmlLoadWebbrowser1.LoadHTML(@"D:'test.htm");
你可以这样称呼它
webBrowser1.Navigate(@"D:'test.htm");
我用你自己的代码测试,它工作。
其次,我认为你也错过了一件小事,但我认为它是重要的,也就是说,在你的代码中有:public string htmlstringfirst = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY>";
你没有忘记添加表单元素的起始标签吗?这样的:
public string htmlstringfirst = "<HTML><HEADER><title>My Web-page</title></HEADER><BODY><form>";
GuidClass
的构造函数附加在htmlstring
之上。但就目前情况而言,每次创建新的GuidClass
时,它都会有自己的htmlstring
副本,该副本初始化为空字符串,然后添加到构造函数中。
相反,您需要在调用之间存储以前的值。
使其工作的"最少代码更改"方法将是更改
public string htmlstring = "";
public static string htmlstring = "";
(其中static
表示类的所有实例共享同一个变量)。
您还需要将调用它的点从objGuid.htmlstring
更改为GuidClass.htmlstring
。
虽然这将使您在短期内工作,但仍有许多改进可以使代码更整洁,更易于维护。Stack Overflow并不是提供这种类型反馈的地方,但是https://codereview.stackexchange.com/上的热心人士将能够为您指出正确的方向。