2012-03-22 20 views
6

Possible Duplicate:
Why <%= %> works in one situation but not in anotherASP.NET - Przekazywanie zmiennej C#, HTML

Próbuję przekazać zmienne zadeklarowane w C# do html. Wszystkie zmienne zostały zadeklarowane jako publiczne w kodzie źródłowym.

Jest to kod HTML używam:

<asp:TextBox ID="TextBoxChildID" Text='<%= Child_ID %>' runat="server" Enabled="false"></asp:TextBox> 

Problemem jest to, że po załadowaniu strony, tekst „<% = Child_ID%>” pojawia się w polu tekstowym zamiast wartości w zmiennej .

Co jest nie tak?

+0

** http: //msdn.microsoft.com/en-us/library/6dwsdcf5%28VS.71%29.aspx** –

Odpowiedz

7

Wszystko to zakłada, że ​​jest to tylko pole tekstowe gdzieś na twojej stronie, a nie kontrolka DataBound. Jeśli textbox jest częścią itemTemplate w repeater, a Child_ID jest czymś, co różni się wierszem danych, to wszystko jest niepoprawne.

Czy to zamiast:

<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"><%= Child_ID %></asp:TextBox> 

W skrócie, robisz ten sam błąd robiłem kiedy zapytałem to pytanie: Why <%= %> works in one situation but not in another


Alternatywnie, w kodzie opóźnieniem, ty może mieć to w twojej ASPX:

<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"></asp:TextBox> 

i to w twoim kodzie-za:

TextBoxChildID.Text = Child_ID; 
+0

Próbowałem twojej sugestii. Jednak teraz nic nie pojawia się w polach tekstowych: s – Matthew

+0

Niestety, sam popełniłem błąd. <%# %> również nie działa w tym kontekście. Powinno być teraz. jeśli tak, to zagłosuj na odpowiedź na moje pytanie - ten facet wykonał świetną robotę wyjaśniając to i zasługuje na punkty. I spójrz na notatki dotyczące tej odpowiedzi - jest tam link do zestawu podobnych wyrażeń, które są pomocne. – David

+0

Daje mi błąd: bloki kodu nie są obsługiwane w tym kontekście – Matthew

1

Zmienna musi być najpierw publiczna. Oraz:

'<%# Child_ID %>' 
+0

Jestem prawie pewien, że tylko musi być chroniony. –

+0

Zgodnie z dobrą praktyką byłoby przekazanie prawidłowej wartości, a nie zmiennej do HTML.Ponieważ istnieje chroniona dziedziczenie bezpośrednie również działa. –

1
<script type="text/javascript"> 
    function abc() 
    { 
     var id = document.getElementById('txtTextBox'); 
     id.value=<%=MyProperty %>; 
     alert(id.value); 
    } 
</script> 

protected int MyProperty 
{ 
    get 
    { 
     return 1; 
    } 
} 

Page.RegisterStartupScript(Guid.NewGuid().ToString(), 
"<script language = 'javascript'>abc();</script>"); 
0

W HTML:

<asp:HiddenField ID="HiddenField1" runat="server" /> 

W kodzie:

protected void Page_Load(object sender, EventArgs e) 
{ 
    HiddenField1.Value = Child_ID; 
} 

Byłby to najlepszy sposób, tworzy ukryte dane wejściowe z wartością.

Powiązane problemy