我仍然不了解Content文件夹在ASP.NET MVC中的工作原理。为了让事情更清楚,我有几个问题:
我发现以下链接在MVC Web应用程序的上下文中有所帮助,但我仍然感谢上面发布的问题的一些答案。谢谢。
Can an ASP.NET MVC controller return an Image?
how to display image using view and controller by ASP.NET MVC
答案 0 :(得分:38)
如果您的路由忽略了根目录中的任何内容将指向根目录:
如果将图像放在项目的根目录上。然后,说http:://localhost/dummy.ico"
将给你一个404,没有找到控制器。 直到,您可以在global.asax.cs
routes.IgnoreRoute("dummy.ico");
//you could add wildcards here to match different things
如果使用说File.Open();
,则从代码中需要文件的物理路径。你这样得到:
string filePath = Server.MapPath(Url.Content("~/Content/Images/Image.jpg"));
这里有你,虽然我会说,如果你想把所有东西放在一个地方,把文件放到数据库中会很有意义。如果您需要移动您的应用程序,您只需移动数据库。
说到文件路径,请记住您不需要重复的文件名,因此您必须为每个文件指定GUID
,然后将其链接起来。如果您拥有大量文件(或大型文件本身),那么您的数据库将不会像疯了一样增长。
HTH
答案 1 :(得分:11)
1. Content文件夹是根文件夹吗? 我的意思是http://localhost/指向 内容还是别的什么?
不,http://localhost:port/未指向内容文件夹。您可以通过http://localhost:port/content/ ...
访问内容文件夹中的文件2.我有一个名为dummyIcon.png的文件 在Content / images / temp文件夹中。怎么样 从我的域图层中找到它 (这是一个代码库项目)?
您应该能够以http://localhost:port/Content/images/temp/dummyIcon.png
的形式访问它3.什么是最好的做法 在ASP.NET MVC中显示图像? 我应该存储图像的路径 数据库(我个人而言) 更喜欢),或者我保存一个字节数组和 将它返回到视图?
存储图像的位置取决于您的应用需求。这些通用图像是用于显示应用程序图像(图标,公司徽标等)的。然后最好将它们存储在文件系统中。
如果您的应用程序处理图像并且您正在处理存储图像,操作等,那么您可能需要DB。我认为,存储Web应用程序中使用的图像是一种开销。
答案 2 :(得分:0)
您应该为控制器创建一个模型对象以返回。在这个例子中,我将返回SearchPageModel,这是我创建的一个类。但是我们假设这个对象有一个名为imageURL
的属性但请确保控制器实际返回ActionResult
所以例如......
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Search()
{
SearchPageModel Model = new SearchPageModel();
// populate the Model properties
Model.ImageURL = "myjpeg"
return View("Search", Model);
}
然后我将此模型对象传回我想要的视图,在这种情况下我的“搜索”视图
并显示图像,在视图中我会添加..
<img src="Images/<%=Model.ImageURL %>.jpg" />