0

これが以前に投稿されていたら申し訳ありません。修正するために多くの Web サイトとフォームを検索しましたが、取得できません。潜在的な顧客が情報を入力して [送信] をクリックし、入力内容のコピーをメールで送信できるようにする簡単な連絡フォームがあります。メール部分は正常に動作しています。ただし、機能していない部分は、フォームが送信された後のメッセージです。try and catch を使用して、送信時にメッセージを表示したり、機能しなかったときにエラー メッセージを表示したりしようとしています。なぜ機能しないのかわかりません。お手伝いありがとう。私のコントローラーコードは以下です。

public ActionResult ContactForm()
{
    return View();
}
public ActionResult Message()
{
    return View();
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ContactForm(ContactModel emailModel)
{
    if (ModelState.IsValid)
    {
    bool isOk = false;
    try
    {
        MailMessage msg = new MailMessage();
        msg.From = new MailAddress("no-reply@bobcravens.com",  "Website Contact Form");
        msg.To.Add("thovden@hovdenoil.com");
        msg.Subject = emailModel.Subject;
        string body = "Name: " + emailModel.Name + "\n"
                    + "Email: " + emailModel.Email + "\n"
                    + "Website: " + emailModel.Website + "\n"
                    + "Phone: " + emailModel.Phone + "\n\n"
                    + emailModel.Message;

        msg.Body = body;
        msg.IsBodyHtml = false;

        SmtpClient smtp = new SmtpClient("smtpout.server.net", 25);
        NetworkCredential Credentials = new NetworkCredential("thovden@hovdenoil.com", "****");
        smtp.Credentials = Credentials;
        smtp.Send(msg);
        msg.Dispose();
        isOk = true
        ContactModel rcpt = new ContactModel();
        rcpt.Title = "Thank You";
                    rcpt.Content = "Your email has been sent.";
                    return View("Message", rcpt);
        }
        catch (Exception ex)
        {
        }
        // If we are here...something kicked us into the exception.
        //
       ContactModel err = new ContactModel();
        err.Title = "Email Error";
        err.Content = "The website is having an issue with sending email at this time. Sorry for the inconvenience. My email address is provided on the about page.";
        return View("Message", err);
        }
        else
        {
            return View();
        }
    }
 }
4

2 に答える 2

1

問題は、あなたが返すビューです:

return View("Messgae", err):

" "のエラーの後postback、無効なモデルで同じビューを返す必要があります

return View(err);

でそのMessageビューを呼び出すMessageModelと、この行で で呼び出したContactModelので、ここでエラーが発生するはずです...

補足:

  • グローバル例外をキャッチしていますが、Exceptionこれは良い習慣ではありません。すべての例外を処理できるわけではなく、処理する必要があります。
  • 何もisOKしないフラグがあります。
  • catch後でではなく、ブロック内に例外 Handel を移動します。

コメントに基づいて更新されました:

ビューを返す代わりに、リダイレクトする必要があります。

return RedirectToAction("Message", err);
return RedirectToAction("Message", rcpt);

public ActionResult Message(ContactModel model)
{
    return View(model);
}
于 2012-01-31T01:23:44.397 に答える
0

何が問題なのかを正確に把握できるように、例外を発行することから始めます。さらに、コードをステップ実行することもできます。

于 2012-01-31T01:15:45.303 に答える