【问题标题】:Webform in subfolder using master page使用母版页的子文件夹中的 Web 表单
【发布时间】:2013-11-20 18:57:41
【问题描述】:

目前我所有的 Web 表单文件 (.aspx) 都在我的项目 (VS 2012) 的根文件夹中。

我创建了一个名为“pages”的新文件夹,并使用母版页向其中添加了一个新的网络表单 (WebForm1)。当我运行这个页面时,它的地址是 localhost:49217/pages/WebForm1.aspx 是正确的,问题是:

  • 现在所有链接都添加了单词“pages”,例如正确的链接应该是 localhost:49217/Contact.aspx 现在变成:localhost:49217/页面/Contact.aspx

  • CSS 看起来很奇怪,有点缺少一些 css 文件(路径错误)。

母版页中的CSS代码,css文件在css文件夹中:

<link rel="stylesheet" href="css/reset.css" type="text/css" media="screen">
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen">
<link rel="stylesheet" href="css/grid.css" type="text/css" media="screen">

如果我在根文件夹中添加一个新的网络表单,一切都很好,但如果我在子文件夹中这样做,一切都搞砸了。

编辑:

  1. CSS 已修复,谢谢大家。

  2. pages”仍未修复,它已添加到(母版页的)所有链接中

【问题讨论】:

  • 向我们展示您在母版页中引用 CSS 文件的位置。
  • @IrishChieftain:我在问题中添加了,这是你需要的吗?
  • 我同意 LilBiggs02 的观点,将页面添加到 URL 是正常的。

标签: c# asp.net webforms


【解决方案1】:

在母版页中引用样式表或 java 脚本文件时,我通常会执行以下操作:

<link href="<%= ResolveUrl("~/css/reset.css") %>" rel="stylesheet" />
<script type="text/javascript" src='<%= ResolveUrl("~/js/master.js") %>'></script>

如果您在本地调试、部署到虚拟目录中的 Web 服务器或部署到网站根目录,这将起作用。

【讨论】:

  • 感谢您的建议。您能帮我解决“页面”部分吗,它已添加到(主)的所有链接中
  • 请试试上面的代码。如果您将子页面移动到不同的子文件夹中,它将起作用。
  • 试过你的代码,它修复了 CSS,但链接仍然被添加到它上面。例如,我在母版页菜单(产品 | 服务 | 联系人 ...)上的所有链接都变为:.../pages/product 或 .../pages/contact
  • @RonaldinhoState - 这就是 asp.net 的工作方式。 url 映射到特定的文件位置。由于产品位于 pages 子文件夹中,这就是您看到 url 的原因。如果要更改 url,请查看 asp.net 路由。 msdn.microsoft.com/en-us/library/cc668201.ASPX
【解决方案2】:

您的路径是相对于当前目录的,您需要在它们前面加上一个斜杠,以便它们始终引用根目录。像这样:

<link rel="stylesheet" href="/css/reset.css" type="text/css" media="screen">
<link rel="stylesheet" href="/css/style.css" type="text/css" media="screen">
<link rel="stylesheet" href="/css/grid.css" type="text/css" media="screen">

您还必须对图像路径执行相同的操作。

【讨论】:

  • OK 现在 CSS 看起来不错,但“页面”仍被添加到所有链接中。你有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2015-01-03
  • 2012-06-24
  • 2020-10-17
  • 2013-12-05
  • 1970-01-01
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多