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