asp.net-mvc-3 - 相对于 Asp.Net MVC 中的 View 路由图像?

标签 asp.net-mvc-3 asp.net-mvc-routing relative-path

我需要能够将图像放置在相对于 View 的路径中,但我不确定如何实现这一点,因为我对 MVC 路由不是很了解:

如果我有这样一条路线:

routes.MapRoute(
                "Parameter",
                "{controller}/{action}/{lang}/{prod}",
                new { controller = "Manuals", action = "Product", lang = "en-US", prod = "productname" }

然后我尝试为图像使用相对路径:

<embed class="images src="@Url.Content("images/sampleimage.svg")"></embed>

这给了我一个看起来像这样的路径(如果我在网络检查器中检查它): src="http://localhost/Manuals/Product/zh-CN/images/sampleimage.svg"

这不是图像所在的位置。它实际位于“http://localhost/Views/Manuals/en-US/productname/images/sampleimage.svg”

所以基本上是 Views 文件夹,然后没有像操作名称 (Product) 这样的文件夹。那么如何在这个环境中使用相对于 View 的路径呢? Action 成为 url 的一部分,但是没有像 Action 方法一样命名的实际文件夹,而且图像将位于 Views 文件夹下,这不是这里 url 的一部分......另外,url 的最后一部分路由(产品名称)似乎根本没有出现在图像路径中,它似乎被解释为 id 或其他东西,因为我只使用一种操作方法来提供基于参数 lang 和 prod 的 View ?

有没有办法像这样放置图片,并使用“images/imagename.svg”之类的相对路径?或者我只是误解了 MVC 中的路由?

我需要这样做来简化添加大量内容和 XSL 转换的结果...

编辑:抱歉,关于我得到的结果,我有一些不正确的网址。现在应该修复以反射(reflect)我所拥有的。

最佳答案

我不确定您是否了解该框架的工作原理。

我的第一点是关于惯例。约定是将 View 存储在 Views 文件夹中。然后您可以为您的显示/编辑模板或共享局部 View 使用 DisplayTemplates、EditTemplates 和 Shared。这是 MVC 开发人员习惯的约定,因此如果您开始在这些文件夹中放置其他内容,您将会混淆其他开发人员,并最终混淆您自己。

你想达到什么目的?您是否在寻找某种特定格式的 URL?您拥有的选项之一是执行将返回您的图像的操作。另一种选择是 URL 重写或路由到静态文件:Using ASP.NET routing to serve static files

关于asp.net-mvc-3 - 相对于 Asp.Net MVC 中的 View 路由图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9675159/

相关文章:

asp.net-mvc - 从 Javascript 更新 Razor 模型

asp.net-mvc - ASP.NET MVC - 路由和 UrlHelper

asp.net-mvc - 如何更改 ASP.NET MVC URL 中的 Controller 文本?

jsp - 如何在不包含上下文根名称的情况下使用相对路径?

html - 如何在 iframe 中创建相对于父 URL 的链接

asp.net-mvc - 相同的 DataAnnotation 属性在相同的属性上重复

c# - Membership.CreateUser 的 ASP.NET MVC 3 单元测试总是返回 MembershipCreateStatus 错误

asp.net-mvc - EditorFor an int 选择字符串模板

c# - ASP.NET MVC Url.Action 和路由名称值

javascript - 在 Javascript 中使用相对路径设置 Google map 图标