Я создаю простую веб-страницу с простой целью: чтобы люди могли связаться с кем-то еще. Для этого я создал такую форму контракта:
<form id="mailForm" action="Contact/SendEmailAsync" method="post">
@Html.AntiForgeryToken()
<div class="form-group">
@Html.TextBoxFor(model => model.FromName, htmlAttributes: new { @class = "form-control"})
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.FromEmail, htmlAttributes: new { @class = "form-control" })
</div>
<div class="form-group">
@Html.TextBoxFor(model => model.EmailSubject, htmlAttributes: new { @class = "form-control" })
</div>
<div class="form-group">
@Html.TextAreaFor(model => model.EMailBody, htmlAttributes: new { @class = "form-control", @cols = "30", @rows = "7" })
</div>
<div class="form-group">
<id="formSubmit" type="submit" value="Verstuur bericht" class="btn btn-primary py-3 px-5">
</div>
</form>
Я также пробовал сокращенную версию действия бритвы.
кнопка отправки связана с вызовом ajax следующим образом:
<script>
$(document).ready(function () {
var mailForm = $('mailForm')
debugger;
var data = mailForm.serialize()
//get button by ID
$('#formSubmit').submit(function () {
debugger;
//call a function with parameters
$.ajax({
url: '@Url.Action("SendEmailAsync", "Contact")',
type: 'POST',
timeout: '12000',
contentType: "application/json; charset=utf-8",
datatype: 'json',
data: data,
})
.done(function () {
console.log('done')});
});
});
</script>
Контроллер выглядит так, но я никогда не попадал в точку останова
namespace site.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ContactController : Controller
{
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<JsonResult> SendEmailAsync(Mail mail)
{
{
var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
var message = new MailMessage();
message.To.Add(new MailAddress("xxxxx")); // replace with valid value
message.From = new MailAddress("xxxxx"); // replace with valid value
message.Subject = "site contactformulier";
message.Body = string.Format(body, mail.FromName, mail.FromEmail, mail.EMailBody); ;
message.IsBodyHtml = true;
using var smtp = new SmtpClient();
var credential = new NetworkCredential
{
UserName = "xxxx", // replace with valid value
Password = "xxxxx" // replace with valid value
};
smtp.Credentials = credential;
smtp.Host = "smtp.xxxx.be";
smtp.Port = 587;
smtp.EnableSsl = true;
await smtp.SendMailAsync(message);
return Json("ok");
}
}
}
}
Ошибка я получаю, что моя страница никогда не обнаруживается:
Веб-страница не найдена для веб-адреса: https://localhost: 44376 / Contact / SendEmailAsyn c
Что я делаю не так?
Заранее спасибо!