我正在开发Web应用程序,其中主页面包含两部分:始终可见的常量块和由3个部分视图中的一个构成的信息块。每个局部视图都是AJAX请求的结果,并且只加载一次(在jQuery提供切换窗口之后)。它运行良好,但我遇到了一个问题。是否可以在部分视图中放入JavaScript
部分视图的html代码包含常量块和信息块中使用的js函数。当页面被加载时,这些函数可以“看到”对方,它的工作原理,但resharper无法找到函数声明,并警告我这一点。由于可以在代码中找到剃刀语法,我无法通过将它们转移到外部js文件来解决问题。
我该怎么办?
谢谢。
更新:
最后我决定从解决意见分开我的js代码的问题。所以,新的问题是如何将剃刀语法包含到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>
我不能决定什么答案是更有用的我:) – Tomy
感谢和欢迎到Stackoverflow :) –
这是一个愉快的开始这样一个不错的接待,非常感谢! – Tomy