2010-02-24 13 views
5
valore

Impostazione nel controllo HTML in codice dietro senza fare controllo serverValore impostato nel controllo HTML in codice dietro senza fare controllo server

<input type="text" name="txt" /> 
    <!--Please note I don't want put 'runat="server"' here to get the control in code behind--> 
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 

codice dietro:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     //If I want to initlize some value in input, how can I set here 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    Request["txt"] // Here I am getting the value of input 
} 

risposta

11

elementi che non sono impostate runat = "server" sono considerati testo semplice e raccolti nel minor numero possibile di oggetti letterali (uno tra ciascun controllo serveride). Suppongo che se davvero lo volessi, potresti provare a trovare l'oggetto Literal (o forse LiteralControl) corretto in Page.Controls e modificarlo, ma lo raccomando decisamente contro.

Cosa c'è di così terribile nell'impostazione di runat = "server"?

E sì, ovviamente è anche possibile utilizzare <% =%>. Embedded code blocks. Sono valutati in tempo di rendering, quindi dovrebbe essere relativamente sicuro farlo.

+3

runat = "server" sembra cambiare anche il nome ad es. "ctl00 $ Main $ Something" che in realtà interrompe l'intero post per un modulo che dovrebbe andare altrove (ad esempio PayPal). – Johncl

26

Questa risposta proviene dalla memoria, quindi mi scuso se è leggermente fuori.

Quello che puoi fare è usare un'espressione inline ASP.NET per impostare il valore durante il caricamento della pagina.

Innanzitutto, aggiungi una proprietà nel code-behind della tua pagina.

protected string InputValue { get; set; } 

In caso Page_Load, impostare il valore della proprietà.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.InputValue = "something"; 
    } 
} 

Infine, aggiungere un'espressione linea nella tua pagina di markup come questo:

<input type="text" name="txt" value="<%= this.InputValue %>" /> 

Questo vi permetterà di impostare il valore dell'elemento input, senza farne un tag lato server.

1
<input type="text" name="txt" value="<%= System.Web.HttpUtility.HtmlEncode(this.InputValue) %>" /> 
2

Aggiungi un'espressione nella tua pagina come questa:

<input class="field" id="locality" name="loc" value="<%= this.inputtypeCT %>"/> 

aggiunge una proprietà nel code-behind della pagina:

protected string inputtypeCT; 

Nell'evento Page_Load, impostare il valore della proprietà:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.inputtypeCT = "test" 
    } 
} 
0

Aggiungere server di runat

o utilizzare Asp controlla come qui di seguito

<asp:TextBox type="text" runat="server" class="demoHeaders" id="datepicker" ClientIDMode="Static" Text=""/> 

Assicurarsi inoltre che si è utilizzato ClientIDMode = "Static" per la denominazione di controllo per essere in clinet come come server.

Divertiti!

Problemi correlati