gpt4 book ai didi

javascript - 将 JavaScript 放在分部 View 中是否可以

转载 作者:IT王子 更新时间:2023-10-29 02:55:21 26 4
gpt4 key购买 nike

我正在开发 Web 应用程序,其中主页包含两部分:始终可见的常量 block 和由 3 个部分 View 之一组成的信息 block 。每个局部 View 都是 AJAX 请求的结果,并且只加载一次(在 jquery 提供切换窗口之后)。它运行良好,但我遇到了一个问题。

部分 View 的 html 代码包含常量 block 和信息 block 中使用的 js 函数。加载页面时,这些函数可以相互“看到”并且可以正常工作,但 resharper 无法找到函数声明并警告我这一点。我无法通过将它们转移到外部 js 文件来解决问题,因为可以在它们的代码中找到 Razor 语法。

我能用它做什么?

谢谢。

更新:

最后我决定解决将我的 js 代码与 View 分开的问题。所以新的问题是如何将 Razor 语法包含到 js 文件中或者什么是可接受的替代方案。我发现的流行解决方案是使用全局变量、数据属性和我更喜欢的解决方案——John Katsiotis 的 RazorJS 库。

http://djsolid.net/blog/razorjs---write-razor-inside-your-javascript-files

我希望它能稳定运行并让 Resharper 满意。

干杯!

更新:

3年后想起这个问题,决定根据自己的经验更新一下。事实上,现在我宁愿不推荐为此使用额外的库。特别是如果你不是项目团队中的唯一成员......如果你在所有的库中得到保证,那就更好了,它们得到创建者和社区的支持,并且可以轻松集成到你的 IDE 中(例如,如果使用特殊语法) .此外,您团队中的所有人都应该知道它是如何工作的。所以现在我建议做接下来的事情:

  1. 将所有 JS 保存在单独的文件中。尽可能地隔离它。为其提供外部API。
  2. 从您的 View 调用 API 函数。
  3. 将所有 Razor 生成的 URL、文本消息、常量作为资源参数传递。

例如:

js文件:

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

查看:

<script>
$.api.someInitFunction({
urls: { myAction: '@Url.Action("MyAction", "MyController")' },
messages: { error: '@errorMessage' },
consts: { myConst: @myIntConst }
});
</script>

最佳答案

如果 Resharper 警告你,那没什么大不了的 ^_^

但如果我是你,我根本不会将 JavaScript 放在局部 View 中

因为分部 View 可能会在一个页面中多次插入,所以您的 JavaScript 会遇到问题。

对于您的情况,如果您不能将 JavaScript 分离到 JS 文件,那么只需创建另一个 PartialView 并将这些脚本放入其中,然后将其呈现在您的主页中。

关于javascript - 将 JavaScript 放在分部 View 中是否可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098198/

26 4 0