2012-02-08 11 views
0

私はこの問題に関して2つの質問をしました。しかし、今では私のコードをやり直して、ほとんどすべてが動いています。唯一の問題は、フォームが成功してもエラーが表示されるため、forが送信された後でモデル状態をチェックしていないことです。ここに私のコードです。フォームはモデル状態をチェックしていないか、サブミット後にフォームをクリアしていません。

[HttpPost] 
    public ActionResult ContactForm(ContactModel emailModel) 
    { 
     MailMessage oMail = new MailMessage(); 

     oMail.From = new MailAddress("[email protected]", "Web Contact Form"); 
     oMail.To.Add("[email protected]"); 
     oMail.Subject = emailModel.Subject; 
     string body = "Name: " + emailModel.Name + "\n" 
        + "Email: " + emailModel.Email + "\n"       
        + "Phone: " + emailModel.Phone + "\n\n" 
        + "Company: " + emailModel.Company + "\n" 
        + "Website: " + emailModel.Website + "\n" 
        + emailModel.Message; 
     oMail.Body = body; 

     SmtpClient client = new SmtpClient("smtpout.secureserver.net"); 
     client.Credentials = new NetworkCredential("username", "password"); 
     client.Send(oMail); 

     string message = "There are a few errors"; 

     if (ModelState.IsValid) 
     { 
      message = "Thanks! We'll get back to you soon."; 
      ModelState.Clear(); 
     } 

     if (Request.IsAjaxRequest()) 
     { 
      return new JsonResult { ContentEncoding = Encoding.UTF8, Data = new { success = true, message = message } }; 
     } 

     TempData["Message"] = message; 

     return View(); 
    } 
+0

私自身の答えが見つかりました。 –

+0

[HttpPost] public ActionResult ContactForm(ContactModel emailModel) { string message = "エラーがいくつかあります。"; if(ModelState.IsValid) { MailMessage content message = "ありがとうございます。すぐにお返事します。"; ModelState.Clear(); } –

答えて

0

悪いです。私はIf(ModelState.IsValid)をあまりにも早く置いた。私の最終的なコードが聞こえます。

[HttpPost] 
public ActionResult ContactForm(ContactModel emailModel) 
{ 
    string message = "There are a few errors"; 

    if (ModelState.IsValid) 
    { 

    MailMessage oMail = new MailMessage(); 

    oMail.From = new MailAddress("[email protected]", "Web Contact Form"); 
    oMail.To.Add("[email protected]"); 
    oMail.Subject = emailModel.Subject; 
    string body = "Name: " + emailModel.Name + "\n" 
       + "Email: " + emailModel.Email + "\n"       
       + "Phone: " + emailModel.Phone + "\n\n" 
       + "Company: " + emailModel.Company + "\n" 
       + "Website: " + emailModel.Website + "\n" 
       + emailModel.Message; 
    oMail.Body = body; 

    SmtpClient client = new SmtpClient("smtpout.secureserver.net"); 
    client.Credentials = new NetworkCredential("username", "password"); 
    client.Send(oMail); 

     message = "Thanks! We'll get back to you soon."; 
     ModelState.Clear(); 
    } 

    if (Request.IsAjaxRequest()) 
    { 
     return new JsonResult { ContentEncoding = Encoding.UTF8, Data = new { success = true, message = message } }; 
    } 

    TempData["Message"] = message; 

    return View(); 
} 
関連する問題