Почему Visual Studio не может свернуть функции Javascript, которые включают синтаксис Razor?

Мой .cshtml файл в Visual Studio выглядит следующим образом:

enter image description here

Обратите внимание, что createTabStrip может свернуть, но createTeachersTab не может. Почему это?

EDIT: похоже, что-то связано с синтаксисом бритвы. Я вынул все знаки @ и createTeachersTab смог свернуть.

Ответ 1

Развернуть мой комментарий.

Обычно вы не хотите определять функции в представлениях Razor. Вместо этого определите их и импортируйте из внешнего файла JavaScript. Если вам нужна информация из С# в JavaScript, вы можете создать глобальный объект конфигурации в JavaScript в частичном Razor, а затем сделать частичным.

function_lib.js

function createTeachersTab() {
    ...
        read: {
            url: config.teachers.newTabUrl
        }
    ...
}

Views/Shared/_JavaScriptConfig.cshtml

Это будет отображаться как Partial в <head> документа HTML.

<script type="text/javascript">
    var config = {
        teachers: {
            newTabURL: '@Url.Action("Teachers", "Users")'
        }
    };
</script>

Затем в любом другом месте вашего JavaScript вы можете ссылаться на эти параметры с помощью глобальной переменной config JavaScript.

config.teachers.newTabUrl

Изменить: я также полностью признаю, что это не решает проблему коллапса кода в Visual Studio, которая, по-видимому, является ошибкой разбора на их конце. Реальное решение - "Не определять функции JavaScript в представлениях Razor", поскольку это считается плохой практикой.

Ответ 2

Также вы можете выделить блок и нажать Ctrl + M, Ctrl + H, чтобы свернуть блок