2011-12-03 1 views
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> 

答えて

関連する問題