我什么时候/为什么要使用C#';s";WebPageExecutingBase.Href();方法?

我什么时候/为什么要使用C#';s";WebPageExecutingBase.Href();方法?,c#,webmatrix,asp.net-webpages,C#,Webmatrix,Asp.net Webpages,我试着搜索Google和Stack Exchange来找到这个问题的答案,虽然它确实产生了一些关于Href()方法的文档(我以前看过的文档),但关于这个方法的问题似乎非常模糊或不存在,我仍然对为什么/何时真正使用它感到困惑 MSDN文档: 通过本文档,我可以看出它从相对路径构建了一个绝对url 我的问题是: 我为什么要这样做 在测试环境之外,甚至在web服务器上,相对路径是否应该正常工作 我是否应该更改站点中的每一个相对路径以合并Href()方法?(示例:将Context.RedirectLoc

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

MSDN文档:

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

我的问题是:

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

  • 我很抱歉对这么简单的事情感到困惑,但我不想在我的网站上线后发现它被破坏或存在安全漏洞(第一印象可能是致命的).

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

    <script type="text/javascript" src="~/Scripts/jquery.js"></script>
    
    
    
    如果不显式使用Href方法或tilde,路径何时可能无法正确解析?例如,如果您更改了主机,那么如果您的站点的根路径结构发生更改,那么它可能不起作用。如果您的内部文件夹结构发生更改,或者您四处移动文件,该功能也可能不起作用。如果这种情况不太可能发生,您可能不需要担心使用这种方法。直到Href方法被tilde替换,我才开始使用它。现在我总是在使用它的基础上使用它,因为它更容易使用,我更愿意在每个url中添加一个额外的击键,而不是在将来的某个阶段感到抱歉


    您可以在本页的一半找到更多关于Href的信息:

    回答得很好,迈克,我很感激!我想我开始明白了。对于我的环境:如果是服务器端代码,我总是使用tilde,但是,如果是HTML(或者JavaScript/jQuery),我只使用正斜杠(而不是tilde)。例如,在上面的示例中,我不会使用tilde,即使它位于
    .cshtml
    文件中,除非它出现在C#函数中。由于它位于
    .cshtml
    文件中,因此(从您的示例中)可以看出,包含它们可能是有益的。这就是你要推荐的吗?正如我所说,这就是我要做的。所以我想我推荐它。