Faris Karcic Ответов: 1

Почему JS показывает другое значение данных, чем HTML, когда данные извлекаются из БД


Так вот что происходит.
Я извлекаю данные из БД, чтобы показать их в приложении.
Я сохраняю его в ViewModel, и все данные там есть, так что никаких проблем с запросами или чем-то еще в бэкэнде нет.

Поэтому я использовал HTML-помощник для отображения данных.

@Модель.Выбранное транспортное средство.VehicleId

Когда я написал его на HTML, все было в порядке, как вы можете видеть здесь. http://imgur.com/7uZbAnr

Но проблема начинается, когда я пишу его с помощью JS (alert или console.log), потому что он каким-то образом или несколько изменяет значение данных, как вы можете видеть здесь. http://imgur.com/bFA9E6I

На экране журнала консоли show 12 - это VehicleId, который должен быть 0014, как вы могли видеть на скриншоте HTML, где 1234-это DriverId, и у меня нет проблем с его отображением в любом случае.

Я понятия не имею, как и почему это происходит, поэтому, если бы кто-нибудь мог объяснить мне, что может быть причиной этого, я был бы благодарен.

Что я уже пробовал:

Я пытался выяснить это сам, но не могу решить, потому что число 12 нигде не является БД.

На другом транспортном средстве, где Id равен 0000, JS записывает 0.

РЕДАКТИРОВАТЬ:

Контроллер:
[HttpPost]
        [Authorize]
        public ActionResult SelectedVehicle(DashboardViewModel model)
        {
            var userId = User.Identity.GetUserId();
            var currentDriver = context.Drivers
                .Where(m => m.AccountId == userId && m.DriverId == model.DriverId)
                .Select(c => c)
                .FirstOrDefault();
            var currentVehicle = context.Vehicles
                .Where(m => m.AccountId == userId && m.VehicleId == model.VehicleId)
                .Select(c => c)
                .FirstOrDefault();

            var viewModel = new DashboardViewModel
            {
                currDriver = currentDriver,
                currVehicle = currentVehicle
                
            };
            return View("Index", viewModel);
        }


модель представления:

public class DashboardViewModel
   {
       public DashboardViewModel()
       {
           this.currDriver = new Driver();
           this.currVehicle = new Vehicle();
       }

       public Driver currDriver { get; set; }
       public Vehicle currVehicle { get; set; }

   }


HTML часть которая работает нормально:
<div class="x_content">
                Being tracked now: 
                @Model.currVehicle.VehicleName 
                @Model.currVehicle.VehicleId 
                @Model.currVehicle.RegistrationPlates
                driven by 
                @Model.currDriver.Firstname @Model.currDriver.Lastname 
            </div>


JS часть:
<script>
    
    $('a.pick-this').on('click', function () {
        console.log(@Model.currVehicle.VehicleId);
        console.log(@Model.currDriver.DriverId);
    });
    
</script>


исходный код HTML:
<div class="x_content">
                Being tracked now: 
                Opel Tigra 
                0014 
                222-B-222
                driven by 
                Faris Karcic 
            </div>


ИСТОЧНИК JS:
<script>
    $('a.pick-this').on('click', function () {
        console.log(0014);
        console.log(1234);
    });
    
</script>


Как я уже заметил, значения в JS верны, но почему я все еще получаю в консоли вместо 0014 номер 12?

Я просто хочу узнать, почему это происходит...

Sinisa Hajnal

Не удается получить доступ к изображениям. В общем, это плохая практика иметь случайные ссылки на форуме, так как люди, как правило, опасаются неизвестных источников.

Faris Karcic

Надеюсь, что теперь он доступен, я обновил его ссылками imgur

Richard Deeming

Обновите свой вопрос, чтобы показать соответствующие части вашего кода и фактический вывод, скопированный из опции браузера "просмотр источника".

F-ES Sitecore

Это происходит из-за ошибки в вашем коде.

Faris Karcic

Обновлено!

@F-ES Sitecore это кажется немного грубым, так как я уверен, что мой код в порядке, если я чего-то не знаю, я говорю, что это я и что я не знаю, как это сделать. Пожалуйста, не принимайте меня за идиота.

1 Ответов

Рейтинг:
6

Richard Deeming

Окружите значения в кавычках:

console.log('@Model.currVehicle.VehicleId');
console.log('@Model.currDriver.DriverId');

На данный момент Javascript обрабатывает значение как числовой литерал и не сохраняет никаких ведущих нулей.

Что еще хуже, в некоторых (наибольший) браузеры, ведущие 0 приведет к тому, что Javascript будет рассматривать это значение как Восьмеричный[^]. 14 в восьмеричной системе счисления является 12 в десятичной системе счисления.

Числа и даты-JavaScript | MDN[^]


Faris Karcic

О, теперь я понимаю. Большое спасибо за объяснение!