#javascript #c# #jquery #ajax #asp.net-mvc
#язык JavaScript #c# #jquery #аякс #asp.net-mvc
Вопрос:
Я хочу преобразовать данные, которые находятся в поле, из действия для просмотра и рассмотрения, которые мы не можем использовать Viewbag
это мое действие
public ActionResult RenderOnetimePassword(SignInModel model) { var selectedCountry = _countryCallingCodeService.GetCountryCallingCodeByTwoLetterIsoCode(model.SelectedCountryTwoLetterIsoCode); var callingCode = selectedCountry.Code; var credential = model.CredentialType == CredentialType.Email ? model.Credential : callingCode model.Credential; var customerfor = _customerService.GetCustomerByMobile(credential); if (customerfor == null) throw new ArgumentException("No customer found with the specified id"); if (selectedCountry == null) return Json(new { success = false, message = _localizationService.GetResource("Account.PhoneNumberConfirmation.NoCountryFound") }); var verificationCodeJsonResult = GenerateVerificationCode(customerfor); if (verificationCodeJsonResult != null) return verificationCodeJsonResult; var isSent = MessagingHelper.SendVerificationCodeMessageToCustomer(customerfor, credential, _code, selectedCountry, _settingService, _tokenizer, _smsInterfaceService, _localizationService, _queuedSMSService, _logger); var signInModel = new SignInModel() { Credential = credential, CredentialType = CredentialType.PhoneNumber, DisplayCaptcha = _captchaSettings.Enabled amp;amp; _captchaSettings.ShowOnLoginPage, WaitingTimeForNextResendCodeRequestInSecond = _phoneAuthenticationSetting.WaitingTimeForNextResendCodeRequestInSeconds }; return Json(new { success = true, }); }
поэтому я не хочу, чтобы вы читали все действия, просто поле, в котором я живу, signinmodel
мне нужно, чтобы в первый раз, когда это подано, данные WaitingTimeForNextResendCodeRequestInSecond
были приведены в RenderOnetimePassword
действие, а затем мы преобразуем данные для просмотра, и в процессе ajax мы получаем данные для какой-то функции, которой нужны эти данные
@model SignInModel $(document).on('click', function () { $("#PassCode").click(function () { data = { Credential: $("#Credential").val(), SelectedCountryTwoLetterIsoCode: $("#SelectedCountryTwoLetterIsoCode").val() }; var count =@Model.WaitingTimeForNextResendCodeRequestInSecond; var counter; function timer() { count = count - 1; if (count lt;= 0) { clearInterval(counter); $('.remainingTimeForResendCodeRequest').hide(); $('#PassCode').show(); return; } $('.remainingTimeForResendCodeRequest').text('@T("Account.SMSCodeVerification.RequestForResendCode")' " " count " " '@T("Account.SMSCodeVerification.Seconds")') } $(document).ready(function () { counter = setInterval(timer, 1000); $("#Code").trigger("focus"); }); $.ajax({ cache: false, url: '@Url.Action("RenderOnetimePassword", "Customer")', data: data, type: 'post', beforeSend: function () { $("#Password").addClass("loading"); }, success: function (response) { if (!response.success) showError(response.message, response.captcha_string); else if (response.url) window.location.href = response.url; else if (response.update_section) $("." response.update_section.name).html(response.update_section.html); }, success: function (response) { $('#PassCode').hide(); $('.remainingTimeForResendCodeRequest').text('@T("Account.SMSCodeVerification.RequestForResendCode")' " " count " " '@T("Account.SMSCodeVerification.Seconds")') $('.remainingTimeForResendCodeRequest').show(); if (!response.success) { validator.showErrors({ "Code": response.message }); } },
Комментарии:
1. Обратите внимание, думаю
var count =@Model.WaitingTimeForNextResendCodeRequestInSecond;
, должно бытьvar count ='@Model.WaitingTimeForNextResendCodeRequestInSecond';
2. чувак, это не имеет значения, нам нужно заполнить этот метод, прежде чем мы запустим это, и мы должны подать это другим способом
Ответ №1:
вы можете отправить свой результат в своем действии в свою функцию представления таким образом
return Json(new { success = true, somthing = lt;somthing u want send to your view gt; }) ;
и, по вашему мнению, вызовите свой результат в своей функции
success: function (response) { somevaribale = response.somthing $('#PassCode').hide(); $('.remainingTimeForResendCodeRequest').text('@T("Account.SMSCodeVerification.RequestForResendCode")' " " count " " '@T("Account.SMSCodeVerification.Seconds")') $('.remainingTimeForResendCodeRequest').show(); if (!response.success) { validator.showErrors({ "Code": response.message }); } },
Я надеюсь, что это сработает для вас 🙂