【问题标题】:Request.Url fails unless prepended by a StringRequest.Url 失败,除非前面有一个字符串
【发布时间】:2015-11-06 03:26:36
【问题描述】:

我正在尝试自动将规范链接放入标题中的每个页面。有问题的页面是具有母版页的 WebForms。

在母版页的<head> 中,我有以下内容:

<link rel="canonical" href="<% Response.Write(Request.Url.ToString) %>" />

但这显示:

<link rel="canonical" href="MasterPages/%3C%25%20Response.Write(Request.Url.ToString)%20%25%3E" />

但是,如果我像这样添加一个空白字符串:

<link rel="canonical" href="<% Response.Write("" & Request.Url.ToString) %>" />

有效:

<link rel="canonical" href="http://localhost:60898/default.aspx" />

奇怪的是,当我取出空白字符串时,编译时语法颜色会从黑色变为蓝色,所以对我来说它看起来像是一个编译器错误。有什么想法吗?

【问题讨论】:

    标签: asp.net .net vb.net webforms master-pages


    【解决方案1】:

    使用 ToString 作为函数:Request.Url.ToString()。 为我工作。

    【讨论】:

    • 它是否显示了与我为您发布的不带括号的相同错误? .ToString 一个函数。不可能是别的。
    • 请注意,VB 编译器比 C# 更智能,并且知道您不需要在所有内容的末尾添加()
    • 我确实尝试过这个只是为了确保它产生了相同的结果。
    • 抱歉,我使用的是 C# 代码。在 VB 中,它不在 head 部分评估脚本。如果你在身体部位使用它,它会正常工作。因此,您可能需要添加服务器端控件并在页面加载时更改 href。
    • 如果前面有一个空白字符串,它正在在 head 部分工作。问题是为什么没有它就行不通。
    猜你喜欢
    • 2014-02-06
    • 1970-01-01
    • 2018-09-29
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 2021-11-17
    相关资源
    最近更新 更多