2012-04-03 61 views
1

如何在页面上添加某个html代码到页面上在asp.net中动态加载页面?如何在页面加载时添加html代码dynamicaly

例如:我需要验证密码。如果密码是错误的..在页面加载应该有一个名为“错误”的div出现在顶部的一个div叫bodyWrapper

我目前的做法是将它内联写入aspx文件..但是我知道这不是将内联和代码混合在一起的正确方式。

<div id="content"> 
     <% 
      Session["loginError"] = "loginError"; 

      try 
      { 
       if (Session["loginError"].ToString() == "lockout") 
       { 
     %> 
     <div class="errorMessage"> 
      Your Account has been locked out. Please wait 
      <% Response.Write(Session.Timeout); %> 
      minutes and try again. 
      <br /> 
     </div> 
     <% 

      } 
       else if (Session["loginError"].ToString() == "loginError") 
       { 
        %> 
        <div class="errorMessage">The user ID or password you entered does not match our records. Please try again. <br /> 
     You may also securely recover your <a href="#">User ID</a> or reset your <a href="#">Password</a> online. 
    </div> 

        <% 

       } 

    } 
    catch 
    { 
     //cssClassName = "loginTextInput"; 
     //Response.Redirect("login.aspx"); 
    }  


     %> 
+0

你应该做一些关于asp.net的教程。我建议你直接开始使用MVC3 http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part1-cs – ivowiblo 2012-04-03 12:31:35

+0

请不要添加东西像“asp.net c#”到你的标题的末尾。这就是标签的用途。 – 2012-04-03 19:07:47

回答

1

如果你只是想将文本写入一个div,给DIV的runat="server"属性:

ASPX

<div id="error" runat="server" class="errorMessage"></div> 

C#

if(IsPostBack && YouHaveAnError) { 
    error.InnerHtml = "[YourErrorMessage]"; 
} 
0

Instea有a的d,你应该有一个asp:Panel,并且在后面的代码中切换可见性。

<asp:Panel ID="pnlAccountLocked" Visible="false" runat="server" CSSClass="errorMessage"> 
     Your Account has been locked out. Please wait 
     <% Response.Write(Session.Timeout); %> 
     minutes and try again. 
     <br /> 
    </div> 

,并在后面的页面加载代码的代码:

 private void Page_Load(object sender, System.EventArgs e) 
    { 
     pnlAccountLocked.Visible = 
         !(Session["loginError"].ToString() == "lockout"); 

    } 
1

你已经基本上几个选项..

1)与标记组合逻辑好像你已经在做(不动态地在我看来)

2.好)添加控件,这样的事情:

迈帕足球俱乐部ge.aspx

<asp:Panel id="pnlErrorPlaceHolder" runat="server">  
</asp:Panel> 

MyPage.aspx.cs

if (i_found_some_error) 
{ 
    Label lbl = new Label(); 
    lbl.Text = "An error occurred"; 

    pnlErrorPlaceHolder.Controls.Add(lbl); 
} 

OR

3)你可以采取所谓的可见的属性,这有助于决定的优势,控制是否将是否应答的一部分。这看起来就像是这样的:

MyPage.aspx

<asp:Panel id="pnlErrorBox" Visible="false" runat="server"> 
     Some info for the user if there was an error. 
</asp:Panel> 

MyPage.aspx.cs

if (there_was_an_error) 
{ 
    pnlErrorBox.Visible = true; 
    // and maybe set some additional info 
} 
0

我敢肯定,你可以在你的Page_Load事件的代码隐藏做到这一点处理程序。有几种方法,但试试这个:

在您的标记,添加一个Panel控件并初步建立起了知名度假:

<asp:Panel ID="ErrorPanel" runat="server" Visible="False"></asp:Panel> 
在你的页面的Page_Load

然后隐藏代码,做你的登录逻辑和写入此面板。例如:

protected void Page_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     if (Session["loginError"].ToString() == "lockout") 
     { 
       LiteralControl errorControl = 
        new LiteralControl(String.Format("Your account has been locked out. Please wait {0} minutes and try again.", Session.Timeout)); 
       ErrorPanel.Controls.Add(errorControl); 
       ErrorPanel.Visible = true; 
     } 
     // add more login logic for login error 
    } 
    catch(Exception) //you may want to capture more specific Exceptions 
    { 
     //handle the exception(s) 
    } 
} 
+0

ooops ...对不起,我是一个noob,并没有看到其他答案。我尽量不要在aspx中使用Response.Write,顺便说一句。它可能导致其他问题。 – WannabeCoder 2012-04-03 12:51:58

0

我的建议,同意签教程像ASP.NET MVC,剃须刀等框架,如果你想进行手动验证那么你已经做错了什么。有很多很多方法可以用很少到零的代码来实现这一点。如果您正在设计Web窗体应用程序,至少可以使用ASP.NET字段验证程序。

相关问题