Как преобразовать объект из действия в представление

#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  });  }  },  

Я надеюсь, что это сработает для вас 🙂