Причина в том, что действие завершено без ожидания результата.
вот упрощенная версия моей реализации
после того, как в вашем контроллере вы можете настроить свой ответ, такой как:
public class ContactModel
{
public string Name { get; set; }
public string Email { get; set; }
public string Website { get; set; }
public string Phone { get; set; }
public string Message { get; set; }
public string Subject { get; set; }
}
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
ContactModel model = new ContactModel();
model.Email = "test@email.com";
model.Message = "message";
model.Name = "name";
model.Subject = "subject";
model.Website = "http://test.com";
ContactForm(model);
return View();
}
/// <summary>
/// Contacts the form.
/// </summary>
/// <returns>Returns view to display the form and fill</returns>
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult ContactForm()
{
return View(new ContactModel());
}
/// <summary>
/// Contacts the form.
/// If model is valid we will go ahead and process emailing
/// </summary>
/// <param name="emailModel">The email model.</param>
/// <returns></returns>
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ContactForm(ContactModel emailModel)
{
if (ModelState.IsValid)
{
MailMessage oMail = new MailMessage();
oMail.From = new MailAddress("no-reply@domain.com", "Web Contact Form");
oMail.To.Add("email@domain.com");
oMail.Subject = emailModel.Subject;
string body = "Name: " + emailModel.Name + "\n"
+ "Email: " + emailModel.Email + "\n"
+ "Website: " + emailModel.Website + "\n"
+ "Phone: " + emailModel.Phone + "\n\n"
+ emailModel.Message;
oMail.Body = body;
if (SendMessage(oMail))
{
return RedirectToAction("Message");
}
else
{
return RedirectToAction("Error");
}
}
else
{
return View(emailModel);
}
}
/// <summary>
/// Sends the message.
/// </summary>
/// <param name="oMail">The o mail.</param>
/// <returns>Boolean success.</returns>
private bool SendMessage(MailMessage oMail)
{
SmtpClient client = new SmtpClient("relay-hosting.secureserver.net");
client.Credentials = new NetworkCredential("email@domain.com", "********", "domaion.com");
try
{
client.Send(oMail);
return true;
}
catch (Exception ex)
{
this.exception = ex;
return false;
}
}
Представление перенаправляет, потому что я предполагаю, что вы не разбили Тип запроса на метод. и поэтому он идет прямо на перенаправление.
это делается
[AcceptVerbs (Http.Get)] или [AcceptVerbs (Http.Post)]
надеюсь, это поможет
Для передачи сообщения:
TemData["message"] = "pass message between controllers like this"
public AcionResult Message (строковое сообщение) {// здесь выберите
ViewData ["message"] = TempData ["message];
return View (); }
или
return RedirectToAction("Message", new{message = "pass message between controllers"});
`enter code here` where
public AcionResult Message(string message){
//or if you are using parameter
ViewData["message"] = message;
return View();
}