2011-12-05 78 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. 
<% 
} 
%> 

模板化控件也將工作。

+0

這沒關係,謝謝。 – Will

2

你試過這個嗎? Response.Write()的結果將放置在開頭<html>標記的上方。
所以這不是一個好主意。

您可以使用模板控件,LoginStatus控件對於工作來說似乎是完美的。

2

@Tetsujin沒有鬼的回答解決了這個問題,但是......

你爲什麼不創建自己的用戶控件(customDropDown.ascx)???

通過這樣做,你將能夠:

  1. 重用別處
  2. 封裝的行爲,所以你只需要修改一個地方
  3. 不要處理字符串並有智能感知支持
  4. 寫HTML標籤與到Visual Studio預覽
+1

我同意,這個html應該在一個用戶控件中,並且在後面的控件代碼中有關聯的業務邏輯。 –

+0

我看不到自己在這個實例中使用的不僅僅是這個,否則創建一個用戶控件將是一個很好的解決方案。 – Will