(индекс): 49 неперехваченных синтаксических ошибок: отсутствует) после списка аргументов

#jquery #asp.net-mvc

#jquery #asp.net-mvc

Вопрос:

 ViewBag.Image = '<image>https://c152688.ssl.cf3.rackcdn.com/tcthh/v10/bg/light/random/singaporecity_light_1280.jpg'
 

Я пытаюсь передать URL-адрес изображения с контроллера для просмотра с помощью viewbag. В представлении я пытаюсь присвоить значение div.

 <script>
$('#logindiv').css("background-image", "url('"   @ViewBag.Image   "')");
</script>
 

Но приведенная выше строка дает мне

Неперехваченная ошибка синтаксиса: отсутствует) после ошибки списка аргументов.

Комментарии:

1. Когда вы просите других людей помочь вам, пожалуйста, уделите время правильному написанию и пунктуации и сделайте хотя бы минимальную разметку, чтобы мы могли определить, что должно быть кодом, а что нет. Когда вы говорите, что получили ошибку, скажите, что из ( ASP.Net компилятор? веб-браузер? что-то еще?) и процитируйте ошибку дословно, используя разметку кавычек. Я исправил вышеизложенное, насколько мог.

2. О строке ViewBag.Image = '....' -> из-за одинарных кавычек это не может быть код C # . Но, учитывая ViewBag имя, похоже, что вы пытаетесь установить переменную .NET из Javascript, что невозможно, потому что одна выполняется в браузере (Javascript), а другая выполняется на сервере (C # / .NET).

3. Взгляните на ваш отрисованный HTML (просмотр исходного кода в браузере), и должно быть ясно, в чем проблема.

Ответ №1:

Первая проблема заключается в том, что URL-адрес изображения не должен <image> содержать в нем тег. Это необходимо удалить.

Вторая проблема заключается в том, что вы добавляете содержимое из ViewBag на стороне сервера. Таким образом, вам не нужно объединять его с JS на стороне клиента. Вам просто нужно вывести его в правильном положении в JS.

 ViewBag.Image = 'https://c152688.ssl.cf3.rackcdn.com/tcthh/v10/bg/light/random/singaporecity_light_1280.jpg'
 
 jQuery($ => {
  $('#logindiv').css("background-image", 'url("@ViewBag.Image")');
});
 

Обратите внимание, что JS должен запускаться после загрузки DOM, поэтому я добавил обработчик document.ready, а также JS должен выполняться в представлении, чтобы синтаксис @ Razor / Blazor был интерпретирован. Если ваш JS содержится во внешнем .js файле, ваш текущий подход не будет работать.

Ответ №2:

Пожалуйста, попробуйте это

 $('#logindiv').css("background-image", 'url("   @ViewBag.Image   ")');
 

Комментарии:

1. Пожалуйста, пришлите мне ссылку на страницу.