0

うまくいけば、タイトルは少なくともある程度意味がありました。

チュートリアルに従って、今日初めてASP.NETとC#をいじっています。私はこれまで快適に到達しまし; ただし、実装しようとすると、次のようになります。

<%@ Reference Control="~/UserInfoBoxControl.ascx" %>

UserInfoBoxControl userInfoBoxControl = (UserInfoBoxControl)LoadControl("~/UserInfoBoxControl.ascx");
userInfoBoxControl.UserName = "John Doe";
userInfoBoxControl.UserAge = 78;
userInfoBoxControl.UserCountry = "Spain";
UserInfoBoxPH.Controls.Add(userInfoBoxControl);

私は得る

The type or namespace name 'UserInfoBoxControl' could not be found...

私のJavaのバックグラウンドにより、このコントロールクラスを「インポート」したいと思うようになりましたが、この仕事をしusingていることは理解しています。@ Referenceチュートリアルの前半からコードを削除して、基本的なトラブルシューティングを試みましたが、うまくいきませんでした。私が他の場所で読んだことから、コードはすべて大丈夫に見えるので、私は少し混乱していて、私のチュートリアルに進むことに熱心です:)

ありがとう!

編集:

私はまだこのハードルにいるので、最終的にはすべてのコードをダンプするのが最も簡単だと思いました。

Default.aspx

Default.aspx.cs(宣言時にエラーが発生しますuserInfoBoxControl

UserInfoBoxControl.ascx

UserInfoBoxControl.ascx.cs

4

2 に答える 2

1

ページディレクティブで名前空間をインポートします。ユーザーコントロールを登録します。

<%@ Register TagPrefix="uc1" TagName="UserInfoBox" Src="UserInfoBoxControl.ascx" %>

編集:(私のコメントから)名前空間ASPを参照してください:

using ASP;
于 2012-05-11T21:08:05.863 に答える
1

すべてを正しく宣言した場合、コードは機能するはずです。

Registerディレクティブは、ページ、ユーザーコントロールなどのコントロールを参照するために必要です。

代わりに、Referenceディレクティブは、「のユーザーコントロール、ページソースファイル、または仮想パスにある任意のファイルを動的にコンパイルし、現在のASP.NETファイル(Webページ、ユーザーコントロール、またはマスターページ)に対してリンクする必要があることを示します。このディレクティブが宣言されています。」

これは単なる推測ですが、単一のファイルで制御を宣言し(つまり、C#コードが別のファイルにない)、@ Controlディレクティブの「className」属性を忘れた可能性がありますか?

編集:私はあなたのコードを見ました、問題はファイルが「UserInfoBoxControl」という名前であるということです、しかしクラスの名前はWebUserControl

public partial class WebUserControl : System.Web.UI.UserControl {

ディレクティブはファイル「〜/ UserInfoBoxControl.ascx」@Referenceをインポートしていますが、タイプ名はWebUserControlです。 これを試してください、それはコンパイルする必要があります:

WebUserControl userInfoBoxControl = (WebUserControl)LoadControl("~/UserInfoBoxControl.ascx");
于 2012-05-11T21:29:40.650 に答える