gpt4 book ai didi

asp.net-mvc - 在 ASP.NET MVC 应用程序中将图像和静态文件放在何处的正确做法?

转载 作者:行者123 更新时间:2023-12-04 19:24:49 25 4
gpt4 key购买 nike

在标准 ASP.NET 模板“Content”中有一个目录,大多数人似乎都在其中放入图像和 css 文件等。

比如stackoverflow的logo:

alt text
(来源:stackoverflow.com)

实际上是指在 URL 中包含“内容”的服务器路径(只需查看任何 SO 页面的源代码,您就会看到这一点)。所以他们显然将图像存储在“content/images/...”中。

src="/Content/Img/stackoverflow-logo-250.png" 

编辑:在过去 10 年的某个时候,他们改变了道路——但这就是过去的样子。

我不是特别喜欢这个。我的 HTML 以 /content 结尾到处都是,并且迁移只有/image 的现有页面稍微困难一些。幸运的是,我的样式表没有以 content 结尾到处都是,只要我保存在 content\site.css .

另一种方法是放置 images根目录下的目录,然后你会得到 imagesControllers 处于同一级别和 Views这太可怕了。

我想知道尝试添加这样的重定向规则:
routes.RedirectRoute(
"images rule",
"Images/{*}",
"Content/Images/{1}"); // this is NOT valid code - I made it up

但是该代码不起作用,因为我只是编造了它。我可以使用第三方重定向/重写插件,但我想在 MVC 模型中保持一切“纯粹”。

其他人在这个地区发现了什么?或者每个人都对额外的 ("/content".length)感到满意吗?他们服务的每个图像的源中的字节数。

最佳答案

老实说,我不认为它真的值得担心......“/Content”将对您的页面大小做出相当小的贡献。如果您仍然想这样做,这里有一些选项:

选项 1,如果您在自己的服务器上运行,则检查 IIS URL 重写模块:http://learn.iis.net/page.aspx/460/using-url-rewrite-module/

选项 2 是使用 RedirectResult 或 ContentResult,以在 MVC 框架中实现相同的效果

首先,将“Images/”下的“catchall”路由映射到 Controller 操作,如下所示

routes.MapRoute("ImageContent", 
"Images/{*relativePath}",
new { controller = "Content", action = "Image" })

确保它高于您的标准“{controller}/{action}/{id}”路线。然后,在 ContentController 中(或您决定放置它的任何地方):
public ActionResult Image() {
string imagePath = RouteData.Values["relativePath"]
// imagePath now contains the relative path to the image!
// i.e. http://mysite.com/Images/Foo/Bar/Baz.png => imagePath = "Foo/Bar/Baz.png"
// Either Redirect, or load the file from Content/Images/{imagePath} and transmit it
}

我做了一个快速测试,它似乎工作。如果您有任何问题,请在评论中告诉我!

关于asp.net-mvc - 在 ASP.NET MVC 应用程序中将图像和静态文件放在何处的正确做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/475012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com