I have had a couple of questions on this issue. However, now I have redone my code and almost all of it is working. The only issue is after the for is submitted it is not checking the model state, because even when the form is successful it displays there is an error. Here is my code.
[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();
}
My bad. I put the If(ModelState.IsValid) too early. Hear is my final code which worked.