.NET MVC 如何从另一个程序集中获取 URL 的嵌入式资源
.NET MVC how to get URL of embedded resource from another assembly
我正在尝试获取嵌入到我制作的 class 库中的某些资源的 URL。有一个 javascript 和一个 css 资源。我需要能够将这些添加到特定的 Razor 视图,以便我想访问它们。如果我能得到这些资源的正确 URL 那么我应该没问题。
我正在使用 MVC .Net Framework 4.5.2
我试过的
1
<script type="text/javascript" src="Default.Namespace.javascript.jsFile.js"></script>
结果:
无法在指定位置找到文件http://localhost:12345/Default.Namespace.javascript.jsFile.js
2
<script type="text/javascript" src="@new FileStreamResult(Assembly.GetExecutingAssembly().GetManifestResourceStream("Defalut.Namespace.javascript.jsFile.js"), "text/javascript")"></script>
结果:
<script type="text/javascript" src="System.Web.Mvc.FileStreamResult"></script>
恐怕您正在尝试做一些不可能的事情。嵌入式资源没有路径。它是 EMBEDDED 到程序集中。
选项 1:
您可能想要创建新的控制器并在那里处理嵌入式资源的分配。
public class ResourceController : Controller
{
public ActionResult Css([Required]string filename)
{
return new FileStreamResult(Assembly.GetExecutingAssembly().GetManifestResourceStream("Defalut.Namespace.javascript." + filename), "text/javascript");
}
public ActionResult Js([Required]string filename)
{
return new FileStreamResult(Assembly.GetExecutingAssembly().GetManifestResourceStream("Defalut.Namespace.css." + filename), "text/css");
}
}
和参考控制器动作。
<script type="text/javascript" src="@Url.Action("Js","Resource", new { filename = "jsFile.js" })"></script>
<link rel="stylesheet" type="text/css" href="@Url.Action("Css","Resource", new { filename = "cssFile.css" })">
您可能想要在控制器操作中处理流实例和可能的状态。例如,找不到嵌入式资源。您还可以使用 OutputCache
属性缓存结果以加快速度。
选项 2:
在网络应用程序启动期间读取嵌入资源并将它们保存到网络应用程序内的文件夹中,然后引用它。
相关链接:
我正在尝试获取嵌入到我制作的 class 库中的某些资源的 URL。有一个 javascript 和一个 css 资源。我需要能够将这些添加到特定的 Razor 视图,以便我想访问它们。如果我能得到这些资源的正确 URL 那么我应该没问题。
我正在使用 MVC .Net Framework 4.5.2
我试过的
1
<script type="text/javascript" src="Default.Namespace.javascript.jsFile.js"></script>
结果:
无法在指定位置找到文件http://localhost:12345/Default.Namespace.javascript.jsFile.js
2
<script type="text/javascript" src="@new FileStreamResult(Assembly.GetExecutingAssembly().GetManifestResourceStream("Defalut.Namespace.javascript.jsFile.js"), "text/javascript")"></script>
结果:
<script type="text/javascript" src="System.Web.Mvc.FileStreamResult"></script>
恐怕您正在尝试做一些不可能的事情。嵌入式资源没有路径。它是 EMBEDDED 到程序集中。
选项 1:
您可能想要创建新的控制器并在那里处理嵌入式资源的分配。
public class ResourceController : Controller
{
public ActionResult Css([Required]string filename)
{
return new FileStreamResult(Assembly.GetExecutingAssembly().GetManifestResourceStream("Defalut.Namespace.javascript." + filename), "text/javascript");
}
public ActionResult Js([Required]string filename)
{
return new FileStreamResult(Assembly.GetExecutingAssembly().GetManifestResourceStream("Defalut.Namespace.css." + filename), "text/css");
}
}
和参考控制器动作。
<script type="text/javascript" src="@Url.Action("Js","Resource", new { filename = "jsFile.js" })"></script>
<link rel="stylesheet" type="text/css" href="@Url.Action("Css","Resource", new { filename = "cssFile.css" })">
您可能想要在控制器操作中处理流实例和可能的状态。例如,找不到嵌入式资源。您还可以使用 OutputCache
属性缓存结果以加快速度。
选项 2:
在网络应用程序启动期间读取嵌入资源并将它们保存到网络应用程序内的文件夹中,然后引用它。
相关链接: