Возврат сообщения после отправки формы
Прошу прощения, если это было опубликовано ранее. Я искал много сайтов и форм, чтобы исправить это, но я не могу получить его. У меня есть простая контактная форма, которая позволяет потенциальным клиентам заполнить их информацию, нажмите кнопку "Отправить" и затем отправьте по электронной почте копию того, что они нам ввели. У меня электронная часть работает нормально. Однако часть, которая не работает - это сообщение после отправки формы. Я пытаюсь использовать попытку и ловить, чтобы отобразить сообщение, когда они отправляют, или сообщение об ошибке, когда оно не работает. Не уверен, почему это не работает. Спасибо вам за помощь. Мой код контроллера ниже.
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();
}
}
}
2 ответа
Проблема в том, что вы возвращаете:
return View("Messgae", err):
Вы должны вернуть тот же вид после ошибки на "postback
", с недействительной моделью
return View(err);
Однажды ты так называешь Message
смотреть с MessageModel
и в этой строке вы назвали это ContactModel
поэтому здесь должна быть ошибка...
Примечания стороны:
- Вы ловите Глобальный
Exception
Исключение это не хорошая практика. Не каждое исключение вы можете и должны обрабатывать. - У вас есть
isOK
флаг, который ничего не делает. - Переместить исключение Генделя внутрь
catch
блок, а не потом
Обновлено на основе комментариев:
Вместо возврата View вы должны Redirect:
return RedirectToAction("Message", err);
return RedirectToAction("Message", rcpt);
public ActionResult Message(ContactModel model)
{
return View(model);
}
Я бы начал с исключения, чтобы вы могли точно понять, что пошло не так. Кроме того, вы можете пошагово пройти через код.