У меня есть этот JQuery:Перенаправление не должно произойти
$('#SaveButton').click(function() {
var url = $('#SaveButton').data("url");
var overview = $('#SaveButton').data("overview");
var createurl = $('#SaveButton').data("createurl");
var flag = true;
var picker = $('#DepositDatePicker').data('datetimepicker');
var utcDate = getFormattedDate(picker.getLocalDate());
if (flag) {
$.ajax({
url: url,
type: 'POST',
data: {
DepositTemplateVersionId: $('input#DepositTemplateVersionId').val(),
depositDate: $('#depositDateValue').val()
},
dataType: 'html',
success: function (result) { document.location = overview; },
error: function (x, t, e) { document.localName = createurl; }
});
}
return false;
});
Это то, что происходит на моем контроллере:
public ActionResult SaveDeposit(DepositCreateScreenDTO depositCreateScreenDTO) //int depositTemplateVersionId, DateTime depositDate)
{
try
{
if (this.ModelState.IsValid)
{
CommandsServiceAgent.Call(c => c.CreateDeposit(depositCreateScreenDTO.DepositTemplateVersionId, depositCreateScreenDTO.DepositDate));
this.Success("Successfully created deposit");
return null;
}
else
{
string Message = "";
var modelStateErrors = this.ModelState.Keys.SelectMany(key => this.ModelState[key].Errors);
foreach (ModelError modelError in modelStateErrors)
{
Message += modelError.ErrorMessage + System.Environment.NewLine;
}
Danger(Message);
return null;
}
}
catch (FaultException<FaultDTO> ex)
{
Danger(string.Format (ex.Message));
return Json(new { Message = ex.Message });
}
catch (Exception)
{
Danger("Error creating deposit");
return null;
}
}
Когда все идет хорошо, моя страница перенаправляется хорошо. При возникновении ошибки, и моя модель недействительна, она должна оставаться на одной странице. По какой-то причине я перенаправляюсь на свою обзорную страницу.
jQuery не является ошибкой, так как вызов ajax отлично работает. – DavidG
Возврат 'null' не приводит к сбою функции ajax. Вы должны проверить результат в функции успеха - 'if (result) {сделать что-то} else {null было возвращено, так что сделайте что-то еще}' –
Лучше иметь возвращаемый тип как 'JsonResult' вместо' ActionResult' для метода действия вызванный через Ajax. Таким образом, вы можете просто вернуть строку и подтвердить свою успешную/неудачную функцию метода $ .ajax. –