4

我尝试在 Google 和 Stack Exchange 上搜索这个问题的答案,虽然它确实产生了一些关于该Href()方法的文档(我之前看过的文档),但似乎关于这种方法的问题要么非常模糊,要么不存在,我仍然对为什么/何时真正使用它感到困惑。

MSDN 文档: http: //msdn.microsoft.com/en-us/library/system.web.webpages.webpageexecutingbase.href (v=vs.111).aspx

通过这个文档,我可以看出它从相对路径构建了一个绝对 url。

我的问题是:

  1. 为什么我需要这样做?
  2. 相对路径不应该在测试环境之外甚至在 Web 服务器上正常工作吗?
  3. 我是否应该更改站点中的一个相对路径以合并该Href()方法?(例如:更改Context.RedirectLocal("~/")Context.RedirectLocal(Href("~/"))
  4. 考虑到 ASP.NET 网页环境,使用此方法的最佳实践是什么?

我很抱歉对看似如此简单的事情感到如此困惑,但我不想让我的网站上线却发现它被破坏或存在安全漏洞(第一印象可能是杀手)。

4

1 回答 1

3

如果您正在使用网页 1 并希望确保您的虚拟路径始终正确映射到绝对 url,您将明确使用该方法。从网页 2 开始,如果解析器在您的 cshtml 文件中的 url 中遇到波浪号 (~),则框架会调用 Href 方法,例如

<script type="text/javascript" src="~/Scripts/jquery.js"></script>

如果不显式使用 Href 方法或波浪号,路径何时可能无法正确解析?例如,如果您更改托管,如果您的站点的根路径结构发生更改,它可能无法正常工作。如果您的内部文件夹结构发生变化,或者您移动文件,它也可能不起作用。如果这不太可能发生,您可能无需担心使用该方法。在将 Href 方法替换为波浪号之前,我并不倾向于使用它。现在我总是在使用它的基础上使用它,而且我更愿意为每个 url 添加一个额外的按键,而不是在将来的某个阶段感到抱歉。

您可以在此页面的中途找到更多关于 Href 的信息:http ://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-剃刀语法

于 2013-08-29T18:46:58.543 回答