0
我試圖從另一個類訪問某個變量,但是我無法這樣做。我有兩個按鈕 - 第一個按鈕將標記設置爲html模板文件。第二個應該生成文件。第一個按鈕調用該類。第二個按鈕應該調用類生成的字符串。從html模板類訪問字符串
我的第一個按鈕如下:
private void btnTemplate_Click(object sender, EventArgs e)
{
if ((txtTitle.Text == "") && (txtSku.Text == "") && (txtPrice.Text == "") && (txtDesc.Text == "") && (txtImg.Text == ""))
{
MessageBox.Show("No row selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
OpenFileDialog SetData = new OpenFileDialog();
SetData.Filter = "HTML|*.html;";
GlobalVar.setPath = "C:\\genHtml.html";
var result = SetData.ShowDialog();
DataSet ds = new DataSet();
if (result == DialogResult.OK)
{
string fileName = SetData.FileName;
var template = new HtmlTemplate(@SetData.FileName);
var output = template.Render(new
{
TITLE = txtTitle.Text,
SKU = txtSku.Text,
PRICE = txtPrice.Text,
DESC = txtDesc.Text,
IMAGE = txtImg.Text
});
File.WriteAllText(@GlobalVar.setPath, output);
}
}
}
我的第二個按鈕:
private void btnGenerate_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start(GlobalVar.setPath);
}
catch
{
MessageBox.Show("Please select a template first", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
我得到的字符串輸出錯誤。我怎樣才能調用字符串'輸出'的第二個按鈕?
我班如下:
class HtmlTemplate
{
private string _html;
public HtmlTemplate(string templatePath)
{
using (var reader = new StreamReader(templatePath))
_html = reader.ReadToEnd();
}
public string Render(object values)
{
string output = _html;
foreach (var p in values.GetType().GetProperties())
output = output.Replace("[" + p.Name + "]", (p.GetValue(values, null) as string) ?? string.Empty);
return output;
}
}
第二個會爲我工作。但是,它需要保存@SetData.FileName的var模板。我將如何在另一個按鈕中完成這項工作?這兩種方法都是無效的 - 會不會成爲一個因素?我在最新的編輯中包含了整個方法 – Bjorn
請參閱我的最新編輯。在第二個按鈕處理程序中創建一個'template'實例,就像在第一個按鈕中一樣。 –
如何在第二個按鈕的模板實例中的@SetData.FileName?第二個按鈕如何引用第一個按鈕? – Bjorn