2011-02-03 15 views
1

初めてここに投稿し、解決コードブロックを(C#の)

私は、私は次の線に沿って何かに渡したいの動的制御書いています:

HyperLink myLink = new HyperLink(); 
myLink.NavigateUrl = "/Home.aspx?id=<%= DataBinder.Eval(\"PageId\") %>"; 
myLink.Text = "The link"; 
myControl.Controls.Add(myLink); 

を私がしたいですmyControlがコントロールを最後に配置するコンテキストに従って、実行時にmyLink.NavigateUrlを解決できるようにする必要があります(これはWebControlではないため、コントロールのコレクションに追加するとページに出力されません)。

+0

詳細下さい!コントロールの使用方法の具体例を挙げることができますか? @tsterに対するあなたのコメントがあっても、あなたが何を求めているのか分かりません。 – Leslie

答えて

1

この質問は私には意味をなさない。あなただけ行うことができますので、あなたはページIDは、この点にあるかを知る必要があります。

HyperLink myLink = new HyperLink(); 
myLink.NavigateUrl = "/Home.aspx?id=" + PageId; 
myLink.Text = "The link"; 
myControl.Controls.Add(myLink); 

あなたがこれを行うことはできません何らかの理由で、あなたはその上で作業しているコードは実際にこれを必要とする提供してくださいすることができます。あなたが投稿した例は、問題が何であるかを私たちに示すためにあまりにも単純化されています。

+0

あなたの答えをありがとう、しかし、私は上記の提案を行うことはできません私はmyControl、消費コードではないので、myLinkは、何かのように見えることができます、データバインディング式の任意の並べ替えを提供します。 – Kurt

+0

もう少し明確にするために、私は再利用可能なコントロールを構築しています。他のコントロールがコントロールのコレクションを渡し、データソースを指定します。再利用可能なコントロールは、それ自身の方法でコントロールの解析とレンダリングを処理します。たとえば、データソースの内容をロードする前に状態をロードし、コントロールをバインドし、ロード/バインディング後に状態を更新します読み込まれたデータを反映させます(AJAXの更新パネルを使用)。 – Kurt

+0

@ Kurt、あなたがMyControlを表示しているのは、それが使用されていて、myLinkをコントロールコレクションに追加しているということです。質問を更新するか、MyControlの行うことを示す新しい質問をしてください。あなたはデータバインディングについて言及します。 mycontrolは(ASP.NET Repeaterコントロールのような)反復項目を持つとしますか?もしそうなら、あなたはおそらくITemplateインターフェースを調べたいでしょう。 – tster

0

、より効率的である:

HyperLink myLink = new HyperLink(); 
myLink.NavigateUrl = string.Concat("/Home.aspx?id=", PageId); 
myLink.Text = "The link"; 
myControl.Controls.Add(myLink); 
+3

私をユーモアにして、それが連結された2つの文字列の場合、なぜより効率的であるかを説明してください。 – jgauffin

+0

k。その理由は、文字列連結を行うと、+演算ごとに新しい文字列を作成するからです。代わりにstring.formatを使用すると、新しい文字列を1回だけ作成します。ただし、この例では、文字列連結が1つしかないため、問題はありません。 – MovGP0