我正在开发 Web 应用程序,其中主页包含两部分:始终可见的常量块和由 3 个部分视图之一组成的信息块。每个部分视图都作为 AJAX 请求的结果出现,并且只加载一次(之后由 jquery 提供切换窗口)。它运作良好,但我遇到了一个问题。
部分视图的 html 代码包含用于常量块和信息块中的 js 函数。加载页面时,这些函数可以“看到”彼此并且它可以工作,但是 resharper 找不到函数声明并警告我这一点。由于可以在他们的代码中找到剃刀语法,我无法通过将它们传输到外部 js 文件来解决问题。
我能用这个做什么?
谢谢。
更新:
最后,我决定解决将我的 js 代码与视图分开的问题。所以新的问题是如何将 razor 语法包含到 js 文件中,或者什么是可接受的替代方案。我发现的流行解决方案是使用全局变量、数据属性和我更喜欢的一个——John Katsiotis 的 RazorJS 库。
http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files
我希望它能够稳定运行并使 Resharper 高兴。
干杯!
更新:
3年后我回忆起这个问题并决定根据我的经验对其进行更新。事实上,现在我宁愿不建议为此使用额外的库。尤其是如果您不是项目团队中的唯一成员……如果您在所有库中都得到保证会更好,它们得到创建者和社区的支持,并且可以轻松集成到您的 IDE 中(例如,如果使用特殊语法) . 此外,您团队中的所有人员都应该知道它是如何工作的。所以现在我建议做接下来的事情:
- 将所有 JS 保存在单独的文件中。尽可能地隔离它。为其提供外部 API。
- 从您的视图中调用 API 函数。
- 将所有 Razor 生成的 URL、文本消息、常量作为资源参数传递。
例如:
.js 文件:
$.api.someInitFunction = function(resources){ ... }
看法:
<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>