Когда я нажимаю на кнопку «Отправить», я хочу остаться на странице и сделать Ajax-вызов, и просто показать окно предупреждения об успехе.Но с этим кодом он перенаправляет меня на
http://localhost:65464/Home/TestMethod
Мой HMTL:
(...)
@using (Html.BeginForm("TestMethod", "Home", FormMethod.Post))
{
<table cellpadding="0" cellspacing="0">
<tr>
<th colspan="2" align="center">Person Details</th>
</tr>
<tr>
<td>PersonId: </td>
<td>
@Html.TextBoxFor(m => m.Name)
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Submit" id="submitBtn" /></td>
</tr>
</table>
}
Мой контроллер:
[AllowAnonymous]
[HttpPost]
public bool TestMethod()
{
return true;
}
Я хочу сохранить синтаксис "Razor", потому что у меня есть аннотации в моей модели (проверки).
Я могу поместить в файл .js ajax и вызвать этот метод, но тогда я не могу проверить напрямую из аннотаций моей модели в форме.Как остаться на странице без перенаправления?
Обновлен файл js:
$('#submitBtn').click(function () {
//var form = $('#emailForm');
//form.validate();
var obj = new Object();
obj.Name = $('#Name').val();
obj.CheckInCheckOutDate = $('#CheckInCheckOutDate').val();
obj.MobilePhone = $('#MobilePhone').val();
obj.EMail = $('#EMail').val();
obj.AdultsNumber = $('#AdultsNumber').val();
obj.ChildrenNumber = $('#ChildrenNumber').val();
obj.MessageBody = $('#MessageBody').val();
obj.MobilePrefixCountry = $('#MobilePrefixCountry').val();
obj.ApartmentName = $('#ApartmentName').val();
obj.NumberOfNights = $('#NumberOfNights').val();
$.ajax({
url: "/Home/SendEmail",
type: "POST",
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data)
$('#successAlert').show('fade')
.delay(3000)
.fadeOut(function () {
$(this).remove();
});
},
error: function () {
$('#errorAlert').show('fade')
.delay(3000)
.fadeOut(function () {
$(this).remove();
});
},
});
});
Я вызываю другой метод, но на самом деле принцип тот же ..
Что япопробовал на основе решения @ D-Shiha: js:
$('#submitBtn').click(function (event) {
event.preventDefault();
console.log('happy');
});
мой новый html:
@using (Html.BeginForm("TestMethod", "Home", FormMethod.Post))
{
<table cellpadding="0" cellspacing="0">
<tr>
<th colspan="2" align="center">Person Details</th>
</tr>
<tr>
<td>PersonId: </td>
<td>
@Html.TextBoxFor(m => m.Name)
</td>
</tr>
<tr>
<td></td>
<td><input type="button" value="Submit" id="submitBtn" /></td>
</tr>
</table>
}