Форма не проверяет состояние модели или не очищает форму после отправки

У меня была пара вопросов по этому вопросу. Тем не менее, теперь я переделал свой код, и почти все это работает. Единственная проблема заключается в том, что после отправки for он не проверяет состояние модели, поскольку даже при успешном завершении формы отображается ошибка. Вот мой код

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

        oMail.From = new MailAddress("no-reply@hovdenoil.com", "Web Contact Form");
        oMail.To.Add("email@hovdenoil.com");
        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();
    }

1 ответ

Решение

Виноват. Я поставил 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("no-reply@hovdenoil.com", "Web Contact Form");
    oMail.To.Add("email@hovdenoil.com");
    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();
}
Другие вопросы по тегам