1

わかりましたので、現在のページの内容を電子メールに問題なく送信できます。フォーマットは少し奇妙で、予想とは少し異なりますが、コツをつかんでいます。

私が現在やりたいことは、現在のフォーム内の前のページ全体のフォーマットされたフォームを送信してアクセスし(これはセッションオブジェクトで実行できると考えています)、これを email に送信することです。これには、テキスト ボックスなどへのユーザー入力が含まれます (現在、セッション オブジェクトを介してページ全体で保持しています [これが重要な場合])。

これらの問題を実際に解決するものは何もなく、グーグルとこのサイトを検索しようとしましたが、いくつかあります。

誰かが私を正しい方向に向けることができれば、それは大歓迎です。

わかりやすくするために、現在のページを電子メールで送信するために使用しているプロセスを次に示します。

    StringWriter sw = new StringWriter( );
    HtmlTextWriter w = new HtmlTextWriter( sw );
    MAIN.RenderControl( w );
    string s = sw.GetStringBuilder( ).ToString( );

    MailMessage message = new MailMessage( );
    message.IsBodyHtml = true;
    message.To.Add( new MailAddress( Session["eMail"].ToString( ) ) );
    message.Subject = "foo bar";
    message.From = new MailAddress( "email@email.com" );
    message.Body = s; //this would be filled with the previous page

したがって、基本的にmessage.Bodyは、前のページのフォーム コンテンツ (書式設定され、すべてのユーザー コンテンツを含む) になります。

前もって感謝します!

編集:私はあなたが現在いるページの前の文字通りの前のページを意味するのではなく、このページに到達するプロセスの前のページを意味します(私の場合、プロセスの2番目のページであり、メール4ページ目でお送りします。)

4

2 に答える 2

3

前のページに与えられたすべてのパラメーターがわかっている場合は、ページのインスタンスを作成して HTML を生成できます。

私はそれについてのブログ記事をここに書きました:

http://www.diaryofaninja.com/blog/2009/09/14/a-simple-solution-to-viewing-a-preview-of-any-page-in-your-site

基本的に、これは ASP.Net ランタイムを利用して、そのライフサイクルを通じてページを実行することを意味します。ページにコンテンツ ID などのパブリック プロパティがある場合は、それらをこの一部として設定できます。

Page tempPage = new Views.Blog.BlogDetail();
tempPage.PageIntro = intro;
tempPage.PageContent = content;

StringWriter sw = new StringWriter();
HttpContext.Current.Server.Execute(tempPage, sw, false);
if (!String.IsNullOrEmpty(sw.ToString()))
{
    return sw.ToString();
}

明らかに、これは前のページを取得するのではなく、その代わりにもう一度生成してそのコンテンツを取得します。

于 2012-04-23T06:22:26.643 に答える
1

前のページを取得するためにフープを飛び越えようとはしません。あなたはある種のページ/ワークフローにいるので、現在の状態を保存し (今はそうしていないはずです)、適切にレンダリングされた状態を含む電子メールを送信することをお勧めします。

たとえば、前のページにコメントがあり、コメントの日付があるとします。次に、その状態(コメントと日付) をたとえばデータベースに保存し、電子メールの送信を行う次のページでそれを取得できます。

データベースが過剰な場合は、セッション状態に保存してから、使用したら削除できます。

于 2012-04-23T05:36:58.417 に答える