Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC:在同一解决方案中的项目之间共享Javascript文件_Javascript_Asp.net Mvc - Fatal编程技术网

MVC:在同一解决方案中的项目之间共享Javascript文件

MVC:在同一解决方案中的项目之间共享Javascript文件,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我研究了如何创建一个javascript,该javascript用于同一解决方案中的多个项目。基本上,我创建了一个类库,其中有一个脚本文件夹,我在其中创建了一个脚本文件,我想在同一个解决方案中的几个项目中使用它 在使用commonscript文件的项目的脚本文件夹中,我添加了一个现有项,如上面链接中所述。我将该文件添加为链接,而不是该文件的副本。但是,我的视图无法读取此javascript文件 我甚至使用javascript将此命令添加到项目的预构建事件中,以便在构建之前将文件从类库复制到我的项

我研究了如何创建一个javascript,该javascript用于同一解决方案中的多个项目。基本上,我创建了一个类库,其中有一个脚本文件夹,我在其中创建了一个脚本文件,我想在同一个解决方案中的几个项目中使用它

在使用commonscript文件的项目的脚本文件夹中,我添加了一个现有项,如上面链接中所述。我将该文件添加为链接,而不是该文件的副本。但是,我的视图无法读取此javascript文件

我甚至使用javascript将此命令添加到项目的预构建事件中,以便在构建之前将文件从类库复制到我的项目中,但也不起作用

copy $(SolutionDir)ClassLibraryName\Scripts\CommonScript.js* $(ProjectDir)Scripts\CommonScript.js
并将脚本添加到我的视图中

<script src="@Url.Content("~/Scripts/CommonScript.js")" type="text/javascript"></script>


如何创建一个javascript文件并在同一解决方案中的多个项目中使用它

您想过托管您的文件吗?这是工业界普遍做的事情,也是我在自己的项目中养成的习惯。使用Apache或IIS建立起来非常容易。

,您也可以考虑重新配置应用程序,而不是使用两个完全独立的项目。我最成功的使用多个项目只针对应用程序完全独立的部分(即一个项目中的接口、另一个项目中的模型、第三个项目中的类定义、第四个项目中的区域、控制器和视图)。如果使用区域,则视图可以从同一组资源(如内容和脚本文件夹)中提取。

另一种选择是使用与网站分离的“媒体服务器”或“静态资产服务器”。这可能只是IIS中的另一个虚拟目录,可以包含任何静态资产,如JavaScript、CSS或图像。然后,您需要从MVC项目中正确引用这些资产:

<script type="text/javascript" src="/assets/foo.js"></script>

如果静态资产虚拟目录位于同一服务器上,则仍然可以使用相对URL。我可能建议对IIS进行以下设置:

  • 默认网站
    • 资产/(虚拟目录)
    • webapp1/(应用程序)
    • webapp2/(应用程序)

因为“资产”虚拟目录只是一个包含文件的文件夹,所以您甚至不需要为它创建VisualStudio项目。使用类似的文本编辑器就足够了,因为它可以打开一个文件夹并像项目一样显示它。

将其设置为解决方案文件。将该文件添加到解决方案文件的文件夹中,但仍然不起作用。我在解决方案资源管理器中创建了一个文件夹,将javascript文件添加到此新文件夹,并在项目中添加了指向此文件的链接,但项目仍然无法从中读取。当文件实际使用VirtualPathProvider类时,它们可以正常工作。您可以将Javascript文件添加为嵌入式资源,并以编程方式处理路径。几年前,我写了一篇关于将母版页作为资源嵌入旧asp.net项目的博客文章,但是它是用法语写的(代码仍然是一样的…),同样的过程应该适用于MVC项目中的脚本文件。如果你真的需要这个,我可以翻译。我认为假设在MVC中创建区域就是说每个应用程序在功能上本质上是相似的。情况可能并非如此。共享静态资产是最终目标。在MVC中创建区域就像在这种情况下用大锤敲击拇指图钉。因此,考虑到,对于应用程序是如此不同以至于不能被分配到同一个项目中的区域的Web应用程序,我无法想象很多情况,但显然它们会有这样的情况。不过,如果在这种情况下有可能的话,以这种方式进行重组将解决问题。