Control.ResolveUrl versus Control.ResolveClientUrl versus VirtualPathUtility.ToAbsolute

前端 未结 4 491
無奈伤痛
無奈伤痛 2020-11-30 07:37

Is there any benifit to using one of these methods over the other when resolving paths which start with the tilde (~)?

Generally, what is a better practice, should y

相关标签:
4条回答
  • 2020-11-30 08:02

    Here's another article that explains the difference between the various ways to resolving paths in ASP.NET -

    Different approaches for resolving URLs in ASP.NET

    0 讨论(0)
  • 2020-11-30 08:08

    The difference between ResolveUrl and ResolveClientUrl is that ResolveClientUrl returns a path relative to the current page, ResolveUrl returns a path relative to the site root:

    http://www.andornot.com/blog/post/ResolveUrl-vs-ResolveClientUrl.aspx

    I would recommend using absolute paths.

    Edit: Rick Strahl posted a nice article about this

    Edit2: Removed bit about caching. Does not add to the answer and may not necessarily be accurate.

    http://west-wind.com/weblog/posts/132081.aspx

    0 讨论(0)
  • 2020-11-30 08:16

    Another difference I noticed:

    Code:

    string value = "~/Docs/Hello & World.aspx"; Response.Write(HyperLink1.ResolveClientUrl(value) + "<br/>"); Response.Write(HyperLink1.ResolveUrl(value) + "<br/>");

    Result:

    Docs/Hello%20&%20World.aspx

    /Docs/Hello & World.aspx

    0 讨论(0)
  • 2020-11-30 08:21

    Note that VirtualPathUtility.ToAbsolute(virtualPath) will throw an exception if a query string is included in the path.

    The HttpException message will be along the lines of "'~/YourVirtualPath/YourPage.aspx?YourQueryStringArg=FooBar' is not a valid virtual path."

    See Rick Strahl's Web Log:ResolveUrl() without Page and MSDN: VirtualPathUtility.ToAbsolute Method (String)

    0 讨论(0)
提交回复
热议问题