我正在使用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>