Hi :) I've got error "Cannot find the Umbraco route definition in the route values, the request must be made in the context of an Umbraco request" and return this wrong peace of code - "return RedirectToCurrentUmbracoPage();". After seding ajax form.
This is my cotroller:
public class ContactController : Umbraco.Web.Mvc.SurfaceController
{
private string GMAIL_SERVER = "smtp.gmail.com";
private int PORT = 587;
[ChildActionOnly]
public ActionResult ContactForm()
{
var model = new ContactFormModel()
{
Email = "",
Name = "",
Subject = "",
Message = ""
};
return PartialView("ContactForm", model);
}
[NotChildAction]
[HttpPost]
public ActionResult ContactForm(ContactFormModel model)
{
var fromAddress = new MailAddress("xxx@gmail.com", model.Name);
var toAddress = new MailAddress("xxx@gmail.com", "To Name");
string fromPassword = "xxx";
string subject = model.Subject;
string body = model.Message;
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
if (!ModelState.IsValid)
{
return CurrentUmbracoPage();
}
var message = new MailMessage(fromAddress, toAddress)
{
Subject = model.Subject,
Body = "test"
};
smtp.Send(message);
return RedirectToCurrentUmbracoPage();
}
}
and this form code:
@using (Ajax.BeginForm("ContactForm" ,"Contact", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace }))
{
@Html.TextBoxFor(m => m.Name, null, new { name = "name", id = "name", placeholder = "Name" })
@Html.ValidationMessageFor(m => m.Name)
@Html.TextBoxFor(m => m.Email, null, new { name = "email", id = "email", placeholder = "Email address" })
@Html.ValidationMessageFor(m => m.Email)
@Html.TextBoxFor(m => m.Subject, null, new { name = "subject", id = "subject", placeholder = "Subject" })
@Html.ValidationMessageFor(m => m.Subject)
@Html.TextAreaFor(m => m.Message, new { rows = "", cols = "", name = "message", id = "message", placeholder = "Your message" })
@Html.ValidationMessageFor(m => m.Message)
<input type="submit" id="contact-submit" value="SEND MESSAGE">
}