2

デザイナー ファイルを削除してページをアプリケーションに変換するように言わないでください - 私はこれを実行しましたが、うまくいきませんでした

プログラムで 2 つの ASP ハイパーリンク コントロールを追加したユーザー コントロールがあります。コントロールをデザイナー ファイルに表示できません。

それらをデザイナー ファイルに手動で追加しようとしましたが、ビルド時に削除されます。

SO を検索し、デザイナー ファイルの削除と ASCX ページのアプリケーションへの変換に関する解決策を見ましたが、うまくいきませんでした。

そのため、ビルド時に、コードがコントロールを見つけられないため、プロジェクト エラーが発生します。

<asp:HyperLink ID="hplSiteLink2" NavigateUrl='<%# GetSiteLink(Eval("SiteName"))%>' runat="server">VIEW SITE INFO</asp:HyperLink>

        protected void GetSiteLink(object SiteName) 
    {
        string sn = string.Empty;

        if (SiteName is string)
        {
            sn = SiteName.ToString();

            if (sn == "redlionnewquay")
            {
                hplSiteLink.NavigateUrl = "http://www.redlionnewquay.co.uk";
                hplSiteLink2.NavigateUrl = "http://www.redlionnewquay.co.uk";
            }
            else
            {
                hplSiteLink.NavigateUrl = "~/Venue/Home/" + Eval("SiteNameUrl");
                hplSiteLink2.NavigateUrl = "~/Venue/Home/" + Eval("SiteNameUrl");
            }   
        }          
    }

何かアイデアがあれば、よろしくお願いします。

4

2 に答える 2

1

コントロールを削除して再度追加しても、デザイナーが更新されない場合は、アクセス許可の問題が原因である可能性があります。すべてのファイルが書き込み可能であり、アクセス許可があることを確認しますか?

正しく機能する他のユーザーコントロールはありますか?拡張機能(ascx)が何らかの理由で関連付けを失う場合があるため、VSはそれを適切に処理する方法を知りません。ビューを切り替えると、違いはありますか?プロジェクトで名前が衝突する可能性はありますか?

最後に、他に何も機能しない場合は、プロジェクトからユーザーコントロールを削除し、Visual Studioを閉じてから、ソリューションを再度開いて、新しいソリューションを追加してみてください。

于 2012-04-05T11:55:24.030 に答える
1

そうですね、解決したと思います。コードにエラーがあるとデザイナー ファイルが生成されないというこの件に関する他のトピックによって、私は正しい軌道に乗っていました。

これを念頭に置いて、手順を何度も調べたところ、if ステートメントで Eval を実行していることに気付きました。これはゴミなので、コードを次のように変更しました。

        public string GetSiteLink(object SiteName)
    {
        string sn = string.Empty;
        string sHtml = string.Empty;

        if (SiteName is string)
        {
            sn = SiteName.ToString();

            if (sn == "redlionnewquay")
            {
                sHtml = "http://www.redlionnewquay.co.uk";
            }
            else
            {
                sHtml = "~/Venue/Home/" + SiteName;
            }
        }
        return sHtml;
    }

前のコードがエラーなしでコンパイルされたので明らかではありませんでしたが、コードビハインドの Eval は「ソフト」エラーだと思います。

ご協力いただきありがとうございます。

于 2012-04-05T13:56:06.883 に答える