Я представляю форму данных через вызов Ajax (я думаю?), Чтобы мой контроллер обрабатывал. Как только строка будет сохранена, я надеюсь перенаправить на исходное действие HttpGet в моем контроллере, который первоначально загрузил форму.Просмотр не освежает после вызова Ajax
Что я нахожу, так это то, что вызов ajax работает, срабатывает действие контроллера и данные сохраняются в базе данных. Однако экран не обновляется после перезагрузки View.
У меня есть точка останова на «обратном представлении (модели)» на действие в моем контроллере, который срабатывает - но экран не обновляется. Если я использую firebug и смотрю на html, я вижу, что новая строка должна отображаться на мой взгляд. Но экран, похоже, не перезагружается вообще.
Мои Javascript:
<script type="text/javascript">
$(document).ready(function() {
$('.btnSubmitNewCard').click(function() {
var data = { cardNumber: $('.txtNewCardNumber').val(), cardHolder: $('.txtNewCardHolder').val(), expiryMonth: $('.txtNewExpiryMonth').val(), expiryYear: $('.txtNewExpiryYear').val(), active: $('.txtNewActive').val(), accountId: $('.Id').val() };
$.ajax({
url: '@Url.Action("SaveBankCard", "BankAccount")',
type: "POST",
contentType: "application/json",
data: JSON.stringify(data),
cache: false,
async: true,
success: function (result) {
console.log(result.toString());
if (result.Success == 'true') {
alert('Redirecting...');
window.location = '@Url.Action("EditBankAccount", "BankAccount", new {accountId = Model.Id})';
}
},
error: function() {
alert("Oh no");
}
});
});
});
</script>
Метод управления вызывается JavaScript выше (успешно):
public ActionResult SaveBankCard(string cardNumber, string cardHolder, int expiryMonth, int expiryYear, string active, int accountId)
{
var card = new AccountCardDto
{
Id = 0,
AccountId = accountId,
Active = active == "on",
CardHolderName = cardHolder,
CardNumber = cardNumber,
ExpiryDate = new DateTime(2000 + expiryYear, expiryMonth, 1)
};
int id = new BankAccountService().SaveCard(card);
return RedirectToAction("EditBankAccount", new { bankAccountId = accountId });
}
И тогда действие контроллера, который вызывается из вызова 'RedirectToAction':
[HttpGet]
[Authorize]
[OutputCache(Location = System.Web.UI.OutputCacheLocation.None)]
public ActionResult EditBankAccount(int? bankAccountId)
{
var model = new BankAccountModel();
if (bankAccountId != null)
{
....
}
return View(model);
}
Эта последняя строка, 'return View (model)' получает вызов. Если я проверю «модель», я вижу новую строку, которая была сохранена в базе данных. Но, как я уже сказал, экран не обновляется.
Может ли кто-нибудь сказать мне, почему, и как я могу исправить/улучшить свою ситуацию?
Какие данные результата контроллер ' 'есть в вашем обратном вызове ajax? – Saravana
Я не уверен на 100%, как это проверить. Вы можете помочь? – Craig
Просто откройте консоль (нажмите F12 в своем браузере), и вы увидите результат. – Saravana