内联C#的ASP控件

时间:2011-12-05 20:58:59

标签: c# asp.net textbox

我正在使用内联C#编写动态下拉列表。取决于用户是否登录。我希望能够写一些asp文本框(见下文)。有没有办法做到这一点,或者更好的方式来完成任务。

感谢。

<%
    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>");
    }
%>

3 个答案:

答案 0 :(得分:4)

您可以使用这样的条件:

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

模板控制也可以。

答案 1 :(得分:2)

你尝试过这个吗? Response.Write()的结果将放在开头的<html>标记上方 所以这不是一个好主意。

您可以使用模板化控件,LoginStatus控件似乎非常适合这项工作。

答案 2 :(得分:2)

@Tetsujin no Oni的答案解决了这个问题,但是......

为什么不创建自己的用户控件(customDropDown.ascx)???

通过这样做,您将能够:

  1. 在其他地方重复使用
  2. 封装行为,因此您只需要对一个地方进行更改
  3. 不使用字符串并具有智能感知支持
  4. 编写支持Visual Studio预览的HTML标签