0
我想用MVC 2的老好的方法來發送電子郵件發送電子郵件,但在這裏給出了一個錯誤:通過轉換代碼到MVC 3 通過渲染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頁模板來呈現爲文本,並將其發送。
更新:
的頂尖解決方案...
#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>
確定。讓我檢查一下... –
是啊!謝謝師父!這正是我所要求的。 –