2012-04-03 101 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字段驗證程序。

相關問題