何时/为什么要使用C#的“WebPageExecutingBase.Href()”方法?

时间:2013-08-29 15:37:31

标签: c# webmatrix asp.net-webpages

我尝试搜索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. 我应该更改 EVERY 我网站中的一个相对路径以合并Href()方法吗? (示例:将Context.RedirectLocal("~/")更改为Context.RedirectLocal(Href("~/"))
  4. 考虑到ASP.NET网页环境,使用此方法的最佳做法是什么?
  5. 我为那些看起来如此简单的东西感到困惑而道歉,但我不愿意让我的网站只是为了发现它已被破坏或有安全漏洞(第一印象可能是一个杀手)。< / p>

1 个答案:

答案 0 :(得分:3)

如果您正在使用网页1,并且希望确保虚拟路径始终正确映射到绝对URL,则可以显式使用该方法。在Web页面2中,如果解析器在cshtml文件的url中遇到波形符(〜),则框架会调用Href方法,例如。

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

如果没有明确使用Href方法或波形符号,路径可能无法正确解析?如果您更改托管,例如,如果您的站点的根路径结构发生更改,则可能无效。如果您的内部文件夹结构更改,或者您移动文件,它也可能无法正常工作。如果不太可能发生这种情况,您可能不必担心使用该方法。在用波浪号替换Href方法之前,我不倾向于使用它。现在我总是使用它,因为它更容易使用,我宁愿在每个网址上添加一个额外的按键,而不是在将来的某个阶段抱歉。

您可以在此页面的一半左右找到有关Href的更多信息:http://www.asp.net/web-pages/tutorials/basics/2-introduction-to-asp-net-web-programming-using-the-razor-syntax