Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';Visual Studio折叠包含Razor语法的Javascript函数?_Javascript_Razor_Visual Studio 2013 - Fatal编程技术网

为什么可以';Visual Studio折叠包含Razor语法的Javascript函数?

为什么可以';Visual Studio折叠包含Razor语法的Javascript函数?,javascript,razor,visual-studio-2013,Javascript,Razor,Visual Studio 2013,Visual Studio中的.cshtml文件如下所示: 注意createTabStrip可以折叠,但是createTeachersTab不能。为什么会这样 编辑:它似乎与razor语法有关。我取出了所有的@标志,并且CreateTacherStab能够折叠。展开我的评论 您通常不希望在Razor视图中定义函数。相反,定义它们并从外部JavaScript文件导入它们。如果需要JavaScript中C#的信息,可以在Razor部分中创建JavaScript中的全局配置对象,然后呈现该部分 函数

Visual Studio中的.cshtml文件如下所示:

注意
createTabStrip
可以折叠,但是
createTeachersTab
不能。为什么会这样


编辑:它似乎与razor语法有关。我取出了所有的
@
标志,并且
CreateTacherStab
能够折叠。

展开我的评论

您通常不希望在Razor视图中定义函数。相反,定义它们并从外部JavaScript文件导入它们。如果需要JavaScript中C#的信息,可以在Razor部分中创建JavaScript中的全局配置对象,然后呈现该部分

函数库js

function createTeachersTab() {
    ...
        read: {
            url: config.teachers.newTabUrl
        }
    ...
}
Views/Shared/_JavaScriptConfig.cshtml

这将在HTML文档的
中呈现为部分

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

编辑:我也完全认识到这并不能解决VisualStudio中的代码崩溃问题,这似乎是一个解析错误。真正的解决方案是“不要在Razor视图中定义JavaScript函数”,因为这被认为是不好的做法。

你也可以突出显示块并按ctrl+m,ctrl+h折叠块

好问题,我注意到VS在js中还没有完全解决折叠问题。如果您折叠该文件,然后再次打开它,它可能会起作用。@asvenno,不幸的是,这不起作用。我认为更好的问题可能是,为什么在函数定义中需要使用Razor语法?URL之类的东西应该是配置的,在这里你有一个Razor视图,它基本上会吐出一个JavaScript对象文字。@GregBurghardt我如何从JS函数访问Razor视图?你不需要这样做。Razor视图只是常规页面的一部分。它创建一个JavaScript文本,然后您可以从函数中引用它。我将在几分钟后发布一个答案,告诉你我的意思。谢谢,这将真正减少我视图的文件大小(现在接近1000多行)。为什么在Razor视图中定义javascript函数被认为是一种不好的做法?@SotirisZegiannis:将javascript函数放在Razor视图中意味着浏览器无法缓存代码,只需添加通过网络发送的位。在某些情况下,你可以违反这条规则,但我的第一反应是把它们放在自己的档案中,除非我找到一个非常非常非常非常好的理由不这样做。我没有想到。谢谢@GregBurghardt的回复。这非常有效。执行此操作一次后,出现可折叠按钮。
config.teachers.newTabUrl