asp:超链接无法在服务器上呈现正确的HTML

时间:2013-02-15 21:37:24

标签: c# webforms

我正在研究.NET 2.0上ASP.NET WebForms中的一个项目,并且遇到了一个我似乎无法找到原因的问题。我的aspx文件中有以下代码:

 <table>
            <tr>
                <td>

                    <asp:HyperLink ID="supportLink" runat="server">Customer Support Docket</asp:HyperLink>
                </td>
            </tr>

            <tr>
                <td>
                    <asp:HyperLink ID="entitlementsLink" runat="server">Edit Entitlements</asp:HyperLink>
                </td>
            </tr>
        </table>

当我在调试模式下本地运行时,它运行良好。链接出现,HTML正确呈现:

本地呈现的HTML

<table>
    <tr>
        <td>

            <a id="ctl00_ContentMain_supportLink" href="ViewCustomer.aspx?customerid=659">Customer Support Docket</a>
        </td>
    </tr>

    <tr>
        <td>
            <a id="ctl00_ContentMain_entitlementsLink" href="EditEntitlements.aspx?customerid=659">Edit Entitlements</a>
        </td>
    </tr>
</table>

但是,当我在生产中的服务器上运行它时,我会生成以下HTML:

服务器呈现HTML

 <table>
        <tr>
            <td>

                <a id="ctl00_ContentMain_supportLink">Customer Support Docket</a>
            </td>
        </tr>

        <tr>
            <td>
                <a id="ctl00_ContentMain_entitlementsLink">Edit Entitlements</a>
            </td>
        </tr>
    </table>

如您所见,两者都缺少href。在我的代码后面我添加了URL,因为我很难让它们在aspx文件中正确呈现:

文件背后的代码

 protected void Page_Load(object sender, EventArgs e)
    {
        supportLink.NavigateUrl = string.Format("ViewCustomer.aspx?customerid={0}",
                                                Request.QueryString["customerid"]);
        entitlementsLink.NavigateUrl = string.Format("EditEntitlements.aspx?customerid={0}",
                                                     Request.QueryString["customerid"]);
    }

此时我不知道我能做些什么。我的计划是在接下来的几个星期内在MVC4中重新编写这个网站,但是看到这是一个内部网站并且没有产生资金,它在我的优先级列表中很低,并且暂时不会得到更多的关注,这意味着我需要解决这个问题。

服务器环境是Windows Server 2003上的IIS 6,HTML在IE9和Chrome 24.0.1312.57中都以这种方式呈现。我已经清除了两个浏览器中的缓存无效,我知道该页面在发布后会更新,因为我添加了相同更改的其他功能实际上正在生产中。

修改

Rezalas想知道我从哪里获得了customerid。它来自查询字符串。要显示空白查询字符串不会导致此处是本地和生产HTML,没有查询字符串:

使用无查询字符串呈现的本地

<table>
    <tr>
        <td>

            <a id="ctl00_ContentMain_supportLink" href="ViewCustomer.aspx?customerid=">Customer Support Docket</a>
        </td>
    </tr>

    <tr>
        <td>
            <a id="ctl00_ContentMain_entitlementsLink" href="EditEntitlements.aspx?customerid=">Edit Entitlements</a>
        </td>
    </tr>
</table>

没有查询字符串的生产HTML

<table>
    <tr>
        <td>

            <a id="ctl00_ContentMain_supportLink">Customer Support Docket</a>
        </td>
    </tr>

    <tr>
        <td>
            <a id="ctl00_ContentMain_entitlementsLink">Edit Entitlements</a>
        </td>
    </tr>
</table>

1 个答案:

答案 0 :(得分:1)

为了澄清,customerid值来自何处?您确定正确拉动服务器上运行的值吗?我这样说是因为它看起来好像没有提供ID,因此没有构建字符串,导航网址被排除,因为它没有值。