4

当然,除了使用 Visual Studio 的 AddResource 按钮之外。

我提交了一个表格,以及一个带有它的图像文件。在我的控制器操作中,我HttpPostedFileBase使用Path.GetFileName(). 如果我只是使用SaveAs()函数将图像文件保存在我的应用程序中,我以后无法访问它进行测试,因为它给了我“不允许加载本地资源”错误。

所以我想将图像添加到 .resx 文件中,稍后使用ResourceManager或其他方式检索它。我的问题是,如何将控制器操作中的图像添加到 .resx 文件中?

我还应该问这是否是在我的应用程序中添加和检索图像文件的好方法。

编辑:好的,使用 .resx 存储图像不是一个好主意。我最初的问题是我可以保存图像文件,但是当我试图在我的视图中显示它时,它给出了“不允许加载本地资源”错误。

这是控制器代码:

public ActionResult UrunEkle(Urun urun, HttpPostedFileBase image)
{
    Directory.CreateDirectory(Server.MapPath("~/App_Data/Images"));
    var path = Path.Combine(Server.MapPath("~/App_Data/Images"), fileName);
    image.SaveAs(path);  

    urun.ArtUrl = path;

    // other stuff....
}

在我看来,我尝试像这样检索图像:

<img alt="@urun.name" src="@Url.Content(urun.ArtUrl)" />

但是使用谷歌浏览器,我得到这个“不允许加载本地资源”。我怎样才能避免这种情况?

4

1 回答 1

1

忘记尝试将图像添加到 RESX 文件;它不是为在运行时修改而设计的。

请发布一些代码。最有可能的是您为稍后使用图像而提供的 URL 不正确。可能是因为您返回的是服务器上文件的路径,而不是网站上下文中图像的 URL。

Chrome 的错误消息告诉您它正在尝试从客户端上的本地文件系统加载资源。

Url.Content 将相对虚拟路径转换为绝对虚拟路径,需要一个以~开头的URL。您当前正在传递图像文件的绝对物理路径,并且 Url.Content 正在返回它,保持不变。您需要 urun.ArtUrl 中的相对虚拟路径 (~/App_Data/Images/Untitled.png)。这是您传递给 Server.MapPath 的值。

于 2012-07-08T08:05:56.620 回答