【问题标题】:ASP.Net Hyperlink navigation URL not including server nameASP.Net 超链接导航 URL 不包括服务器名称
【发布时间】:2010-12-09 19:08:26
【问题描述】:

这可能是一个非常简单的问题,但它让我很难过。我有一个网络表单,我试图在代码中创建指向文件服务器共享的超链接,例如file://myServer/Shared/,但在呈现页面时,链接不包含服务器名称,即 file:///Shared/。我不知道为什么会这样。感谢您提供任何帮助或见解。

更新:

当然,这里是设置链接的 sn-p。

    //The link is embedded in a table
    HyperLink link = (HyperLink)e.Row.Cells[1].Controls[0];
    link.NavigateUrl = @"file://myServer/Shared/";

作为测试,我将链接分配给一个字符串值,然后链接打印出预期的 url。

string foo = link.NavigateUrl;

//Displays this
"file://myServer/Shared/"

我不知道为什么链接在最终页面呈现时没有出现。

更新 2:

好的,所以我知道我必须在代码隐藏中设置绝对路径,我以为这就是我正在做的,但它仍然无法正确呈现。

更新 3:

我遵循 pjacobs 关于设置测试属性的建议,这实际上是朝着正确方向迈出的一步。我有以下内容:

link.Text = "<a href=\"file:\\myServer\\Shared\">link text</a>";

现在链接呈现如下:file:///myServer/Shared。我几乎就在那里,除了它在服务器名称前面提供了额外的“/”。我会继续玩它,这看起来应该很简单,我不明白为什么 ASP.Net 会以不同的方式呈现 URL。

【问题讨论】:

    标签: c# asp.net web-applications webforms


    【解决方案1】:

    您必须设置超链接的 Text 属性... link.Text = "whatever"

    【讨论】:

    • 这是每个 asp.net 开发人员的眼中钉,从第一天起就一直存在。实际上有十几种不同的方式来组合路径。当我需要复习时,我总是会回到这个帖子。 west-wind.com/weblog/posts/132081.aspx
    • 感谢 pjacobs,我能够让它工作,很奇怪,如此微妙的事情竟然如此困难。感谢您提供的链接,如果我再次遇到此错误,我会保留它。
    【解决方案2】:

    资源在项目内吗?如果是这样: 您需要使用 ResolveUrl 来解析资源的“Web 位置”。 http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx

    如果您使用的是 asp.net 控件,则不需要使用解析 url,但您需要参考文件相对于项目路径的位置。

    如果不是: 您是否为 ASP.NET 进程提供了正确的读取帐户? 使用虚拟目录? http://www.dotnetspider.com/tutorials/AspNet-Tutorial-86.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2017-07-09
      • 2016-09-20
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2017-07-08
      相关资源
      最近更新 更多