4

現在のユーザーのフル ネームへのアクセスを必要とする ASCX ユーザー コントロールがあるとします。ASPX ページの上部にこの行が含まれています

<%@ Register src="top.ascx" tagprefix="custom" tagname="top" %>

本文の次の行:

<custom:top runat="server" />

ASPX ファイルは、現在のユーザーのユーザー ID を認識しており、フル ネームを判別できます。では、ASPX ファイルによって実行されるコードを使用して、その情報を ASCX ファイルに提供するにはどうすればよいでしょうか。

4

4 に答える 4

6

UserControl でプロパティを宣言し、親ページで設定します。

ユーザーコントロールで:

public string FullName { get; set; }

aspxページで、分離コードに設定します

YourUserControl.FullName = FullName

またはマークアップを介して

<custom:top runat="server" FullName="<%= SomeProperty %>" />
于 2012-04-16T15:23:10.040 に答える
4

Pageユーザー コントロールのプロパティを使用して、ページのインスタンスにキャストできます。次に、ページ クラスのメソッドを呼び出して、ユーザー名を取得します。

動的にコンパイルされたプロジェクトでこれを機能させるには、動的にコンパイルされたページのデータ型をコントロールに認識させるために、もう少し作業を行う必要があります。以下は、 の実行方法に関する短いチュートリアルです

または、Brandon が概説しているように、反対のことを行い、ページにユーザーが情報を制御できるようにします。

于 2012-04-16T15:23:03.287 に答える
0

これは、ページのライフサイクルがどのように機能するか、およびコントロール全体でデータを公開する方法について誤っている可能性があるように思われます。たとえば、ASPXに次のコードがあるとします。

  public override void OnLoad(EventArgs e)
  {
       string userName = "Bob";
  }

ASPXファイルでは、コントロールを参照し、その上にプロパティを設定して、データを渡すことができます。

  <custom:top ID="someControl" runat="server" />

top次のように、コントロールのプロパティを公開します。

  public string UserName { get; set; }

次に、このコードをOnLoadメソッドに追加できます。

  someControl.UserName = userName;

その後、コントロールはそのデータにアクセスできるようになります。または、コントロールへの直接回線がない場合は、リクエストキャッシュに物を貼り付けることができます。

  HttpContext.Current.Items["key"] = userName;

次に、同じ方法でコントロールからデータをプルします。

  string fromCache = HttpContext.Current.Items["key"];
于 2012-04-16T15:25:17.877 に答える
0

これについては、いくつかの方法で行うことができます。ユーザーはセッションにバインドされるため、通常はセッション変数を使用します。

ASPXの場合(またはユーザーがログインした場合):

Session["UserFullName"] = GetFullName(); //Code to get full name here

ASMXの場合:

this.FullName = Session["UserFullName"]; //TODO: Check for null values
于 2012-04-16T15:26:26.063 に答える