我想使用JQuery Ajax提交表单(Html.BeginForm())。 根据this question,它应该工作! 我不明白为什么来自动作SendEmail()的参数'email'没有从js获取值。 你能帮我吗?ASP.Net MVC,使用JQuery.Ajax提交表单
笔者认为:
{ %>
De...
A...
Model.Agent.Email, new { @id = "MailTo", @Name = "MailTo" })%>
Objet :
Model.MailSubject, new { @id = "MailSubject", @Name = "MailSubject" })%>
我的控制器:
[HttpPost]
public ActionResult SendEmail(Email email)
{
if (email != null)
{
if (!string.IsNullOrEmpty(email.MailBody) & !string.IsNullOrEmpty(email.Subject) & !string.IsNullOrEmpty(email.To))
{
using (IEmailDal emailDal = new EmailDal())
{
emailDal.SendEmail(email);
}
return Json("Email envoyé", JsonRequestBehavior.AllowGet);
}
else
return Json("Error");
}
else
return Json("Error");
}
我的电子邮件类:
public class Email
{
public string From { get; set; }
public string To { get; set; }
public string Subject { get; set; }
public string MailBody { get; set; }
}
要提交我的形式,我通过jQuery的一个按钮模拟提交动作.dialog:
$("#mail-form").dialog({
buttons: {
"Envoyer le mail": function() {
$("#formSendMail").submit();
}
}
});
而且我的javascript:
$('#formSendMail').submit(function (e) {
var myEmail = {
From: $('#MailFrom').val(),
To: $('#MailTo').val(),
Subject: $('#MailSubject').val(),
MailBody: $('#MailBody').val()
};
$.ajax({
type: "POST",
url: '',
data: JSON.stringify(myEmail),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert("Mail envoyé.");
},
error: function (result) {
alert("Echec lors de l'envoi du mail.");
}
});
return false;
});
谢谢!
2015-10-13
Flesym
+1
你的表单没有提交按钮 –
+2
而作为一个侧面说明 - 这个问题的答案是并不完全正确 - 你不需要字符串化的数据,如果你删除'的contentType:“应用/ JSON的;字符集= utf-8“,' –
+0
@Coulton:它没有提交按钮,因为我使用的是JQuery.Dialog,我通过对话框中的按钮模拟提交方法:$(”#mail-form“)。对话框({ 的AutoOpen:假的, 宽度:1140, 模式:真, 按钮:{ “Envoyer乐邮件”:函数(){ $( “#formSendMail”)提交();} 。} }); –