0
私は電子メールを送信する必要がある1つのプロジェクトに取り組んでいます。メール形式はascx
Usercontrolで行われ、そのコントロールは電子メール本文のレンダリングに使用されます。名前や日付などの特定の変数は別の方法で埋められます。UserControlオブジェクトasp.netでレンダリングC#
私の主な問題は、クラスとメソッドのオブジェクトと共に電子メール本文にコントロールをレンダリングすることです。実際にはMVCのようにしたい(フロントエンドでモデルを渡す)。これを行う良い方法はありますか?次のように
私が使用していたコードは次のとおりです。
string path = "Email Template/LeaveRequestedEmailToAPPREC.ascx";
body = RenderUserControl(path,lrd);
MailMessage msg = new MailMessage();
try
{
msg.From = new MailAddress(fromemail, fromname);
msg.To.Add(toemail);
msg.Subject = subject;
msg.Body = body;
msg.IsBodyHtml = true;
SmtpClient sc = new SmtpClient();
sc.Host = "smtp.ntc.net.np";
sc.Port = 25;
sc.Send(msg);
msg.Dispose();
msg = null;
return true;
}
//======== Rendering the UserControl ==========
public string RenderUserControl(string path,object viewmodel)
{
Page holder = new Page();
UserControl viewControl = (UserControl)holder.LoadControl(path);
HtmlForm tempForm = new HtmlForm(); //if the UserControl contain some server controls like TextBox, Button, Add a form wrapped them.
tempForm.Controls.Add(viewControl);
holder.Controls.Add(tempForm);
StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(holder, output, false);
string outputToReturn = output.ToString();
output.Close();
return outputToReturn;
}