0
のページをレンダリングを経由してメールを送信:私はMVC 3 にコードを変換することによってMVC 2の古き良きアプローチを使用して電子メールを送信したいが、それはここでエラーを与えるASP .NET MVC 3
Control control1 = vp1.LoadControl("/Views/Home/_SupportEmailAdmin.cshtml");
vp1.Controls.Add(control);
エラーメッセージ:
種類 'ASP.Page_Views_Home__SupportEmail_cshtml'は 'System.Web.UI.UserControl'から継承しません。
正しい方法がありますか?ここで
はコードです:二つの単語で
ViewBag.SupportRequest = this.SupportRequest;
ViewPage vp1 = new ViewPage();
vp1.ViewData = ViewData;
Control control1 = vp1.LoadControl("/Views/Home/_SupportEmailAdmin.cshtml");
vp1.Controls.Add(control);
StringBuilder sb1 = new StringBuilder();
using (StringWriter sw1 = new StringWriter(sb1))
{
using (HtmlTextWriter tw1 = new HtmlTextWriter(sw1))
{
vp1.RenderControl(tw1);
}
}
sb1.Insert(0, @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd""><html xmlns=""http://www.w3.org/1999/xhtml""><body>");
sb1.Append("</body></html>");
MailMessage msg1 = new MailMessage(new MailAddress(this.SupportRequest.EMail, this.SupportRequest.Name),
new MailAddress(from, fromName));
msg1.Subject = fromSubject;
msg1.IsBodyHtml = true;
msg1.Body = sb1.ToString();
....
質問はテキストとしてそれをレンダリングし、それを送信するためにMVC 3ページのテンプレートを使用する方法です。
UPDATES:
フィニアルソリューション...
#region Send Support Request to Admin
StreamReader streamReader1 = new StreamReader(Server.MapPath("/Views/Home/_SupportEmailAdmin.cshtml"));
string emailTemplate1 = streamReader1.ReadToEnd();
streamReader1.Close();
string result1 = Razor.Parse(emailTemplate1, new { Name = sr.Name, EMail = sr.EMail, Subject = sr.Subject, Message = sr.Message });
StringBuilder sb1 = new StringBuilder();
sb1.Insert(0, @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Strict//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd""><html xmlns=""http://www.w3.org/1999/xhtml""><body>");
sb1.Append(result);
sb1.Append("</body></html>");
MailMessage msg1 = new MailMessage(new MailAddress(sr.EMail, sr.Name),
new MailAddress(from, fromName));
msg1.Subject = fromSubject;
msg1.IsBodyHtml = true;
msg1.Body = sb1.ToString();
#endregion
smtp.Send(msg1);
とCSHTMLの内容
file
<table>
<tbody>
<tr>
<td>
Name
</td>
<td>@Model.Name
</td>
</tr>
<tr>
<td>
Email
</td>
<td>@Model.EMail
</td>
</tr>
<tr>
<td>
Subject
</td>
<td>@Model.Subject
</td>
</tr>
<tr>
<td>
Message
</td>
<td>@Model.Message
</td>
</tr>
</tbody>
</table>
[OK]をクリックします。それをチェックさせてください... –
うん!ありがとうマスター!これはまさに私が求めていたものです。 –