1

私は、.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 がありません。私のコード ビハインドでは、aspx ファイルで適切にレンダリングするのに苦労していたので、URL を追加しています。

コード ビハインド ファイル

 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 と運用 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>
4

1 に答える 1

1

明確にするために、customerid 値はどこから来ていますか? サーバー上で実行されたときの値が適切にプルされていることは確かですか? ID が提供されていないように見えるため、文字列が構築されておらず、値がないためにナビゲート URL が除外されているためです。

于 2013-02-15T21:45:12.820 に答える