2011-12-05 10 views
0

私はインラインC#を使用して動的なドロップダウンを書いています。ユーザーがログインしているかどうかによって異なります。私は、いくつかのASPテキストボックス(以下を参照)で書くことができるようにしたいと思います。これを行う方法、またはタスクを達成するためのより良い方法がありますか?ASPコントロールとインラインC#

ありがとうございました。

<% 
    if (checkLogin() == true) 
    { 
     Response.Write("<ul id=\"userDropdown\">"); 
     Response.Write("<li class=\"userDropdown_right\"><a href=\"#\" class=\"drop\">Test User</a>"); 
     Response.Write("<div class=\"dropdown align_right\" style=\"width:175px;\">"); 
     Response.Write("<div class=\"col_2\">"); 
     Response.Write("<h2>Test User</h2>"); 
     Response.Write("<h3>Administrator</h3>"); 
     Response.Write("<a href=\"#\">Settings </a>"); 
     Response.Write("<a href=\"#\">Logout </a>"); 
     Response.Write("</div></div></li></ul>"); 
    } 
    else 
    { 
     Response.Write("<ul id=\"userDropdown\">"); 
     Response.Write("<li class=\"userDropdown_right\"><a href=\"#\" class=\"drop\">Login</a>"); 
     Response.Write("<div class=\"dropdown align_right\" style=\"width:175px;\">"); 
     Response.Write("<div class=\"col_2\">"); 

     **<asp:TextBox ID="test" runat="server" />** 


     Response.Write("</div></div></li></ul>"); 
    } 
%> 
+0

カスタムコントロール? –

+0

'PlaceHolder'コントロールを使うと、出力を' Response.Write'ではなくページ上の特定の場所に送ることができます。また、いいえ、この方法でサーバー側のコントロールをページに書き込むことはできません(少なくともそうしてはならないし、そうでなければ信頼してはいけません)。私は、より良いアプローチのために既に与えられている他の提案を延期します... – David

+0

カスタムコントロールを作成し、ログインした場合にLoginViewコントロールを使用して表示します。 – TheBoyan

答えて

4

あなたはこのように、条件を使用することができます。

<% 
if (checkLogin()==true){ 
%> Logged In content here <% 
} else { 
%> 
Not Logged In content here, including server controls. 
<% 
} 
%> 

テンプレートコントロールもうまくいきます。無鬼の答え@Tetsujin

+0

これはトリック、ありがとうございます。 – Will

2

これを試しましたか? Response.Write()の結果は、<html>タグの先頭に配置されます。
それは良い考えではありません。

テンプレートコントロールを使用すると、LoginStatusコントロールがジョブに最適なように見えます。

2

は、なぜあなたはあなた自身のユーザーコントロール(customDropDown.ascx)を作成していない問題を解決しますが、... ???次のことができるようになること。これにより

  1. 一つだけの場所
  2. への変更は、文字列では動作しないようにする必要がありますので、動作をカプセル化別の場所
  3. それを再利用インテリセンスサポート
  4. ビジュアルスタジオのプレビューに対応するHTMLタグを書きます
+1

私は同意する、このHTMLは、コントロールのコードの背後に、関連付けられているビジネスロジックを持つユーザーコントロールにする必要があります。 –

+0

私はこの1つのインスタンス以上のものを使って自分自身を見ることができません。そうしないと、ユーザーコントロールを作成すると良い解決策になります。 – Will

関連する問題