【问题标题】:T4MVC and virtual directoryT4MVC 和虚拟目录
【发布时间】:2012-12-04 07:19:34
【问题描述】:

我在我的项目中使用T4MVC。但是在部署到 virtual directory 例如“/app”后,当我运行该站点时,所有地址都是 wrong 。例如,不是content/site.css,而是/app/content/site.css,浏览器找不到它。

例如我写:

<link href="@Links.Content.bootstrap_min_css" rel="stylesheet" type="text/css" />

呈现给

<link href="/app/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />

而不是

<link href="Content/bootstrap.min.css" rel="stylesheet" type="text/css" />

我应该如何解决这个问题?

【问题讨论】:

  • 您能发布更多详细信息吗?具体来说:你到底在写什么代码?查看源代码时呈现的是什么?你期待的是什么?
  • @DavidEbbo :我更新了问题

标签: asp.net asp.net-mvc asp.net-mvc-3 virtual-directory t4mvc


【解决方案1】:

通常,这是正确的行为。如果您的应用程序在虚拟目录 /app 下运行,那么应该可以使用 /app/content/site.css 请求静态文件。因此,您的首要重点应该是尝试了解这不起作用的原因。

如果你真的想改变这个逻辑,请查看 T4MVC.tt.hooks.t4 中的ProcessVirtualPath。您可以更改路径的处理方式,并根据需要轻松使其相对。请务必在更改此文件后重新运行 T4MVC 自定义工具。

【讨论】:

  • 是否可以在不改变生成链接的标准行为的情况下获取文件的虚拟路径?在传递 Bundle 配置中特定内容的链接时很有用。
【解决方案2】:

如果您在视图中显示用于引用 .css 的代码,将会很有帮助。我想它是这样的:

<link rel="stylesheet" type="text/css" href="/content/site.css">

您可以使用以下方法(在 Razor 中)指定应用程序根相对 url:

<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/site.css")">

希望对您有所帮助。

【讨论】:

  • 正如我所提到的,我正在使用t4mvc.codeplex.com 来强类型化路径。我没有硬编码地址。
  • 你能把你使用的链接标签贴出来吗?
  • 不应该是@Links.Content.site_css吗?
  • 不,我的意思是“_css”,而不是“_cs”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-29
  • 2013-09-14
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2017-03-06
相关资源
最近更新 更多