ASP控件与内联c#

本文关键字:控件 ASP | 更新日期: 2023-09-27 18:16:55

我正在使用内联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>");
    }
%>

ASP控件与内联c#

你可以使用这样的条件语句:

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

模板化控件也可以。

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

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

@Tetsujin no Oni的答案解决了问题,但是…

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

这样你就可以:

  1. 在其他地方重用
  2. 封装行为,所以你只需要在一个地方做改变
  3. 不使用字符串,并有智能感知支持
  4. 编写支持visual studio预览的HTML标签