2

我正在开发一个网格控件,我想在其中使用一些 javascipt。我在类库项目中添加了一个 js 文件,并将其 Buid Action 设置为“Embedded Resource”。但是 js/jquery 函数(在 js 文件中实现)无法访问,我也无法在我使用该 dll 的其他项目中查看包含的 js 文件,一切正常,期待这个。

请提供一些帮助。

4

3 回答 3

5

在你的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"/>

输出

在此处输入图像描述

已编辑(马修的评论)

这里有几个屏幕截图

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

于 2012-06-07T13:52:47.000 回答
0

“嵌入资源”使您的js文件成为 dll 的一部分,因此您无法在其他项目中查看它。

js文件假设可以从您的 javascript 代码访问,并且您不需要将其嵌入到 dll 中。

于 2012-06-07T11:38:03.803 回答
0

如果您想在 DLL 中嵌入 CSS/JS,则需要以不同于仅使用文件名的方式引用它们。查看http://www.karpach.com/Custom-ASP-NET-server-control-with-embedded-resources.htm了解有关它的信息(它适用于 ASP.NET 2.0,但它应该给你一些开始的想法和)。

另外,请查看此 [stackoverflow question],了解您是否应该嵌入这些资源。

[1]我应该在 Web 应用程序中嵌入 CSS/JavaScript 文件吗?

于 2012-06-07T11:52:09.120 回答