Ответ 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", поскольку это считается плохой практикой.