我正在开发一个网格控件,我想在其中使用一些 javascipt。我在类库项目中添加了一个 js 文件,并将其 Buid Action 设置为“Embedded Resource”。但是 js/jquery 函数(在 js 文件中实现)无法访问,我也无法在我使用该 dll 的其他项目中查看包含的 js 文件,一切正常,期待这个。
请提供一些帮助。
我正在开发一个网格控件,我想在其中使用一些 javascipt。我在类库项目中添加了一个 js 文件,并将其 Buid Action 设置为“Embedded Resource”。但是 js/jquery 函数(在 js 文件中实现)无法访问,我也无法在我使用该 dll 的其他项目中查看包含的 js 文件,一切正常,期待这个。
请提供一些帮助。
在你的Controller
. 使用反射,您可以读取 resourceName 并将其返回为FileStreamResult
. 在视图中添加脚本路径为/Controller/Action/actualjsfile.js
测试样品的步骤如下
创建类库项目(JSDLL)
添加TestJS.js
为嵌入资源(文件内容如下图)
function MyAlert() {
alert("Hello! this is from the dll");
}
在 AssemblyInfo.cs 添加以下内容(需要添加对 System.Web.dll 的引用)
[assembly: System.Web.UI.WebResource("JSDLL.TestJS.js", "application/x-javascript")]
编译类库项目并添加作为对 MVC 项目的引用
在您的控制器中添加以下操作(与博客文章相同;但稍作修改)
public FileStreamResult ContentFile(string id)
{
string resourceName = Assembly.GetAssembly(typeof(JSDLL.Class1)).GetManifestResourceNames().ToList().FirstOrDefault(f => f.EndsWith(id));
return new FileStreamResult(Assembly.GetAssembly(typeof(JSDLL.Class1)).GetManifestResourceStream(resourceName), "text/javascript");
}
简单的测试视图(看看.js
文件是如何被引用的。onClick
我从.js
文件中调用函数)
@{
ViewBag.Title = "About Us";
}
<h2>About</h2>
<p>
Put content here.
<button type="button" onclick="MyAlert()">Text</button>
</p>
<script type="text/javascript" src="/Home/ContentFile/TestJS.js"/>
输出
已编辑(马修的评论)
这里有几个屏幕截图
“嵌入资源”使您的js
文件成为 dll 的一部分,因此您无法在其他项目中查看它。
js
文件假设可以从您的 javascript 代码访问,并且您不需要将其嵌入到 dll 中。
如果您想在 DLL 中嵌入 CSS/JS,则需要以不同于仅使用文件名的方式引用它们。查看http://www.karpach.com/Custom-ASP-NET-server-control-with-embedded-resources.htm了解有关它的信息(它适用于 ASP.NET 2.0,但它应该给你一些开始的想法和)。
另外,请查看此 [stackoverflow question],了解您是否应该嵌入这些资源。