2012-04-03 8 views
1

как добавить определенный HTML-код на страницу на странице динамически загружается в asp.net?как добавить html-код dynamicaly на загрузку страницы

например: мне нужно подтвердить пароль. если пароль неверен .. при загрузке страницы должен появиться div с именем «error», который появляется только сверху. a 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

+0

Пожалуйста, не добавляйте вещи как «asp.net C#» до конца ваших названий. Для этого нужны теги. –

ответ

1

Если вы просто хотите, чтобы написать текст в DIV, дать Div в runat="server" атрибут:

ASPX

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

C#

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

Instea d of a, у вас должна быть панель 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.) добавить элементы управления динамически, что-то вроде этого:

MyPa 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); 
} 

ИЛИ

3.) вы можете воспользоваться атрибутом под названием Visible, который помогает решить, будет ли элемент управления будет часть ответа или нет. Это будет выглядеть как-то вроде этого:

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 ваших страниц CodeBehind, сделать свой логин логику и напишите на эту панель.Например:

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 и не вижу других ответов. Я стараюсь не использовать Response.Write в aspx, BTW. Это может привести к другим проблемам. – WannabeCoder

0

Я согласен с предложением оформить учебники каркасные, как ASP.NET MVC, Razor и т.д. Если вы пытаетесь выполнить ручную проверку, то вы уже делаете что-то неправильно. Есть много, много и много способов сделать это с небольшим нулевым кодом. По крайней мере, вы можете использовать ASP.NET Field Validators, если вы разрабатываете приложение Web Forms.

 Смежные вопросы

  • Нет связанных вопросов^_^