Post 与 ajax ASP.NET
Post with ajax ASP.NET
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(Contact contact)
{
using (LawContext DB = new LawContext())
{
if (ModelState.IsValid)
{
DB.Contact.Add(contact);
DB.SaveChanges();
return Json("OK");
}
return View();
}
}
查看
@using (Html.BeginForm("Index", "Contact", FormMethod.Post))
{
@if (!ViewData.ModelState.IsValid)
{
@Html.ValidationSummary("", new { @class = "alert-danger" })
}
@Html.AntiForgeryToken()
@Html.TextBoxFor(m => m.Lastname, new { @class = "form-control margin-bottom10", @placeholder = "Name" })
@Html.TextBoxFor(m => m.Mail, new { @class = "form-control margin-bottom10", @placeholder = "Mail" })
@Html.TextBoxFor(m => m.Phone, new { @class = "form-control margin-bottom10", @placeholder = "Phone" })
@Html.TextAreaFor(m => m.Message, new { @class = "form-control margin-bottom10", @placeholder = "Message", @rows = "3" })
<input type="submit" value="Submit" class="btn btn-darkgray" id="btn_contact" />
}
JavaScript
$(document).ready(function () {
$("#btn_contact").click(function () {
$.ajax(
{
type: "POST",
url: "Contact/Index",
data: {
Lastname: $("#Lastname").val(),
Mail: $("#Mail").val(),
Phone: $("#Phone").val(),
Message: $("#Message").val()
},
dataType: "json",
async: true,
processData: false,
cache: false,
contentType: "application/json; charsetset=utf8",
success: function (data) {
alert('success');
},
failure: function (data) {
alert('failure');
},
error: function (data) {
alert('error');
}
});
});
});
我不明白为什么会这样
平时不用报警吗?
我怎样才能正确地做到这一点?我需要你的帮助。
我研究了很多例子。
我想我已经失去了不问的希望。
我想好好工作
尝试将您的提交按钮更改为:
<input type="button" value="Submit" class="btn btn-darkgray" id="btn_contact" />
或者您可以保持原样,在 Ajax 调用中执行:
$(document).ready(function () {
$("#btn_contact").click(function (event) {
event.preventDefault();
$.ajax(
{
type: "POST",
url: "Contact/Index",
data: {
Lastname: $("#Lastname").val(),
Mail: $("#Mail").val(),
Phone: $("#Phone").val(),
Message: $("#Message").val()
},
dataType: "json",
async: true,
processData: false,
cache: false,
contentType: "application/json; charsetset=utf8",
success: function (data) {
alert('success');
},
failure: function (data) {
alert('failure');
},
error: function (data) {
alert('error');
}
});
});
});
这是为了防止提交类型按钮的默认行为,该按钮将表单发送到操作 url (<form action="contact/index" method="POST" ...
),在您的情况下您没有。
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(Contact contact)
{
using (LawContext DB = new LawContext())
{
if (ModelState.IsValid)
{
DB.Contact.Add(contact);
DB.SaveChanges();
return Json("OK");
}
return View();
}
}
查看
@using (Html.BeginForm("Index", "Contact", FormMethod.Post))
{
@if (!ViewData.ModelState.IsValid)
{
@Html.ValidationSummary("", new { @class = "alert-danger" })
}
@Html.AntiForgeryToken()
@Html.TextBoxFor(m => m.Lastname, new { @class = "form-control margin-bottom10", @placeholder = "Name" })
@Html.TextBoxFor(m => m.Mail, new { @class = "form-control margin-bottom10", @placeholder = "Mail" })
@Html.TextBoxFor(m => m.Phone, new { @class = "form-control margin-bottom10", @placeholder = "Phone" })
@Html.TextAreaFor(m => m.Message, new { @class = "form-control margin-bottom10", @placeholder = "Message", @rows = "3" })
<input type="submit" value="Submit" class="btn btn-darkgray" id="btn_contact" />
}
JavaScript
$(document).ready(function () {
$("#btn_contact").click(function () {
$.ajax(
{
type: "POST",
url: "Contact/Index",
data: {
Lastname: $("#Lastname").val(),
Mail: $("#Mail").val(),
Phone: $("#Phone").val(),
Message: $("#Message").val()
},
dataType: "json",
async: true,
processData: false,
cache: false,
contentType: "application/json; charsetset=utf8",
success: function (data) {
alert('success');
},
failure: function (data) {
alert('failure');
},
error: function (data) {
alert('error');
}
});
});
});
我不明白为什么会这样 平时不用报警吗? 我怎样才能正确地做到这一点?我需要你的帮助。 我研究了很多例子。 我想我已经失去了不问的希望。
我想好好工作
尝试将您的提交按钮更改为:
<input type="button" value="Submit" class="btn btn-darkgray" id="btn_contact" />
或者您可以保持原样,在 Ajax 调用中执行:
$(document).ready(function () {
$("#btn_contact").click(function (event) {
event.preventDefault();
$.ajax(
{
type: "POST",
url: "Contact/Index",
data: {
Lastname: $("#Lastname").val(),
Mail: $("#Mail").val(),
Phone: $("#Phone").val(),
Message: $("#Message").val()
},
dataType: "json",
async: true,
processData: false,
cache: false,
contentType: "application/json; charsetset=utf8",
success: function (data) {
alert('success');
},
failure: function (data) {
alert('failure');
},
error: function (data) {
alert('error');
}
});
});
});
这是为了防止提交类型按钮的默认行为,该按钮将表单发送到操作 url (<form action="contact/index" method="POST" ...
),在您的情况下您没有。