2016-03-03 2 views
0

добавить Control Body с MasterFormClass.csASP Web Form Control Добавить С MasterFormClass.cs

protected override void OnInit(EventArgs e) 
    { 
     HtmlGenericControl NewControl = new HtmlGenericControl("div"); 
     NewControl.ID = "LoadingSpinImage"; 
     NewControl.Attributes.Add("style", "background-image: url('../../common/images/477.gif'); background-repeat: no-repeat; background-attachment: fixed; background-position: center; width: 100%; height: 98%; position: absolute; top: 1px;  background-color: rgba(255,255,255,0.6);"); 
     this.Form.Controls.Add(NewControl); 
     base.OnInit(e); 
    } 

Результат:

<html> 
 
    <body> 
 
    .... all control or element 
 
    .... all control or element 
 
    .... all control or element 
 
    <div id="LoadingSpinImage" style="width: 100%; height: 98%; position: absolute; top: 1px; background-image: url('http://preloaders.net/preloaders/495/Spinning%20segments.gif'); background-attachment: fixed; background-color: rgba(255, 255, 255, 0.6); background-position: 50% 50%; background-repeat: no-repeat;"></div> 
 
    </body> 
 
    </html>

Но ... Это добавляет к внизу страницы. Я хочу добавить чуть ниже тела.

Это должно быть результатом я хотел:

<html> 
 
    <body>  
 
    <div id="LoadingSpinImage" style="width: 100%; height: 98%; position: absolute; top: 1px; background-image: url('http://preloaders.net/preloaders/495/Spinning%20segments.gif'); background-attachment: fixed; background-color: rgba(255, 255, 255, 0.6); background-position: 50% 50%; background-repeat: no-repeat;"></div> 
 
    .... all control or element 
 
    .... all control or element 
 
    .... all control or element 
 
    </body> 
 
    </html>

ответ

1

Одним из способов было бы добавить жерех: PlaceHolder на нужном месте страницы и добавить элемент управления заполнителем.

<asp:PlaceHolder ID="phLoadingSpinImage" runat="server" /> 

phLoadingSpinImage.Controls.Add(new Label() { Text = "@@@", ID = "AnotherLabel" }); 

даже easyer способом было бы поместить нагрузку Див постоянно внутри заполнителя и установить его видимость:

<asp:PlaceHolder ID="phLoadingSpinImage" runat="server"> 
     <div id="LoadingSpinImage" style="width: 100%; height: 98%; position: absolute; top: 1px; background-image: url('http://preloaders.net/preloaders/495/Spinning%20segments.gif'); background-attachment: fixed; background-color: rgba(255, 255, 255, 0.6); background-position: 50% 50%; background-repeat: no-repeat;"></div> 
    </asp:PlaceHolder> 

phLoadingSpinImage.Visible = yourCondition; 

Вы также могли бы сделать DIV непосредственно управления сервером с RUNAT = «сервер» и установить его видимость.

+0

Я не могу писать код на странице aspx. Существует более 400 страниц aspx. –

+0

this.Form.Controls.AddAt (0, new Label() {Text = "###", ID = "MyFancyLabel"}); – Glia

+0

Очень хорошо :) Я ищу это. Письма написаны как отдельный ответ. Я подтверждаю –

0

я нашел себе решение :) Я имел решение путем объединения двух различных тем

1- Response Html Edit

2- First html element replace(form element)

Результат:

protected override void Render (HtmlTextWriter writer) 
    { 

     System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
     HtmlTextWriter tw = new HtmlTextWriter(new System.IO.StringWriter(sb)); 
     //Render the page to the new HtmlTextWriter which actually writes to the stringbuilder 
     base.Render(tw); 

     //Get the rendered content 
     string sContent = sb.ToString(); 
     string divStr = "<div id=\"LoadingSpinImage\"></div>"+Environment.NewLine+"<form "; 

     //regex with firs replace 
     var regex = new System.Text.RegularExpressions.Regex(System.Text.RegularExpressions.Regex.Escape("<form ")); 
     string newContent = regex.Replace(sContent, divStr, 1); 

     //Now output it to the page, if you want 
     writer.Write(newContent); 

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