可以在部分视图中放置JavaScript吗?

24 浏览
0 Comments

可以在部分视图中放置JavaScript吗?

我正在开发一个网页应用程序,主页包含两部分:常驻块始终可见,信息块由三个部分视图之一组成。每个部分视图都是通过AJAX请求获取的,并且只加载一次(之后通过jquery提供切换窗口的功能)。它工作得很好,但我遇到了一个问题。

部分视图的HTML代码包含在常驻块和信息块中使用的js函数。当页面加载时,这些函数可以“相互看到”,并且可以正常工作,但resharper无法找到函数声明,并对此发出警告。我不能通过将它们转移到外部js文件来解决这个问题,因为它们的代码中包含了razor语法。

我该怎么办呢?

谢谢。

更新:

最终,我决定解决这个问题,将我的js代码与视图分离。所以新的问题是如何将razor语法包含到js文件中,或者是否有可接受的替代方法。我找到的流行解决方案包括使用全局变量、数据属性,以及我更喜欢的一个解决方案是John Katsiotis的RazorJS库。

我希望它能够稳定工作,并让Resharper满意。

干杯!

更新:

3年后,我回忆起了这个问题,并决定根据我的经验对其进行更新。实际上,我现在更不建议使用额外的库来解决这个问题。特别是如果你不是项目团队中的唯一成员...最好的做法是确保你所使用的所有库都得到了创建者和社区的支持,并且可以轻松地集成到你的IDE中(例如使用特殊的语法)。此外,你的团队成员都应该知道它是如何工作的。所以现在我建议做以下几件事情:

  1. 将所有的JS代码放在独立的文件中,尽可能隔离它。
  2. 为其提供外部API。
  3. 从视图中调用API函数。
  4. 将所有Razor生成的URL、文本消息和常量作为资源参数传递。

例如:

js文件:

$.api.someInitFunction = function(resources){ ... }

视图:

0