C# 带内联C的ASP控件
我正在使用内联C编写一个动态下拉列表。取决于用户是否登录。我想能够写在一些asp文本框的见下文。有没有办法做到这一点,或者有更好的方法来完成这项任务 谢谢C# 带内联C的ASP控件,c#,asp.net,textbox,C#,Asp.net,Textbox,我正在使用内联C编写一个动态下拉列表。取决于用户是否登录。我想能够写在一些asp文本框的见下文。有没有办法做到这一点,或者有更好的方法来完成这项任务 谢谢 <% if (checkLogin() == true) { Response.Write("<ul id=\"userDropdown\">"); Response.Write("<li class=\"userDropdown_right\"><a hre
<%
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>");
}
%>
你试过这个吗?Response.Write的结果将放在开始标记的上方。 所以这不是个好主意
您可以使用模板控件,LoginStatus控件似乎非常适合该作业 您可以使用如下条件:
<%
if (checkLogin()==true){
%> Logged In content here <%
} else {
%>
Not Logged In content here, including server controls.
<%
}
%>
模板控件也可以工作 @Tetsujin没有解决问题的答案,但是 为什么不创建自己的用户控件customDropDown.ascx 通过这样做,您将能够: 在别处重复使用 封装行为,这样您只需要对一个位置进行更改 不使用字符串,并支持intellisense 编写支持visual studio预览的HTML标记
您可以使用占位符控件将输出定向到页面上的特定位置,而不是Response.Write。另外,不,以这种方式将服务器端控件写入页面将不起作用,至少它不应该起作用,如果它起作用,您就不应该信任它。对于更好的方法,我将遵从已经给出的其他建议…创建一个自定义控件,并在用户登录时使用LoginView控件显示它。@Henk我使用的是WebForms我同意,这个html应该在一个用户控件中,其关联的业务逻辑在控件代码后面。我不能看到我自己只在这个实例中使用它,否则创建一个用户控件将是一个很好的解决方案。