Похоже, что вам просто нужно поместить значение в кавычки, razor поместит значение @item.ProductId.ToString()
непосредственно в HTML, но оно не будет в кавычках, поэтому, когда браузер интерпретирует его как javascript, он будет быть в замешательстве.
Полезно помнить, когда вы работаете с бритвой, что это система шаблонов, которая выводит документ, который затем интерпретируется браузером. @item.ProductId.ToString()
просто помещает текст в этот шаблон. Javascript не имеет доступа к этой переменной, за исключением случаев, когда она доступна через шаблон. По этой причине оно должно быть окружено чем-то, чтобы JavaScript воспринимал его как строку. Практически это означает окружение его кавычками, как в "@item.ProductId.ToString()"
Как пример:
В этом примере, если 'test'
не заключен в кавычки, он будет неопределенным, так как ищет переменную с именем test: