除了使用Visual Studio的AddResource按钮之外,当然。
我提交了一个表单和一个图像文件。在我的控制器操作中,我使用HttpPostedFileBase
获取Path.GetFileName()
对象及其文件名。如果我只是使用SaveAs()
函数将图像文件保存在我的应用程序中,我以后无法访问它进行测试,因为它给了我“不允许加载本地资源”错误。
所以我想将图像添加到.resx文件中,稍后使用ResourceManager
或其他内容检索它。我的问题是,如何将控制器操作中的图像添加到我的.resx文件中?
我还应该问一下,这是否是在我的应用程序中添加和检索图像文件的好方法。
EDITED: 好的,使用.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)" />
但是使用谷歌浏览器,我得到“不允许加载本地资源”。我怎么能避免这个?
答案 0 :(得分:1)
忘记尝试将图像添加到RESX文件中;它不是为在运行时修改而设计的。
请发布一些代码。最有可能的是,您之前提供使用该图像的URL不正确。可能是因为您在服务器上返回文件的路径,而不是在网站上下文中返回图像的URL。
来自Chrome的错误消息告诉您它正在尝试从客户端上的本地文件系统加载资源。
Url.Content会将相对虚拟路径转换为绝对虚拟路径,并且需要以〜开头的网址。您当前正在传递图像文件的绝对物理路径,而Url.Content正在返回它,未更改。您需要urun.ArtUrl中的相对虚拟路径(〜/ App_Data / Images / Untitled.png)。这是您传递给Server.MapPath的值。