2010-10-15 5 views
7

Ich habe eine ASCX, dieWie legen Sie eine Int-Eigenschaft eines Steuerelements auf ASCX fest?

<my:Foo ID="Bar" runat="server" Value='' /> 

I enthält wollen textbox1.Text gesetzt Value mit, aber Value ist ein Int32. Ich bin auf der Suche nach so etwas wie folgt aus:

<my:Foo ID="Bar" runat="server" Value='<%= Int32.Parse(textbox1.Text) %>' /> 

Aber ich bekomme

Parser Error Message: Cannot create an object of type 'System.Int32' from its string representation '<%= Int32.Parse(textbox1.Text) %>' for the 'Value' property. 

Gibt es eine Möglichkeit, dies auf der ASCX-Datei zu tun? Muss ich einen TypeConverter für diese Eigenschaft implementieren?

Antwort

7

Ich verstehe nicht, warum Sie nicht einfach die wörtliche anstelle eines String-Darstellung verwenden:

<my:Foo ID="Bar" runat="server" Value="58" /> 

Wenn Sie dynamisch diesen Wert festlegen möchten, müssen Sie dies in der Code-behind tun oder innerhalb eines Codeblocks, zum Beispiel in der Seitenlade Ereignis behandeln, da Sie nicht in Codeblöcke (<%%>) innerhalb einer Serverseite Steuerung verwenden können:

// code behind, in the page_load event handler 
Bar.Value = 58; 

oder im ascx, außerhalb der Server-Seite Kontrollen:

<% Bar.Value = 58; %> 
+0

Also ist es nicht möglich, "Value" mit 'textBox1.Text' Wert auf der ASCX-Datei zu setzen? – BrunoLM

+0

Sie können es mit einem Codeblock machen, solange es außerhalb des Steuerelements ist. Siehe aktualisierte Antwort. – Oded

7

ändern es zu

<my:Foo ID="Bar" runat="server" Value="58" /> 

Der ASP.Net-Parser automatisch integer Eigenschaften analysieren.

<%= ... %> Ausdrücke werden für serverseitige Steuerelemente nicht unterstützt. Daher verursacht Ihr Code, dass ASP.Net versucht, die literale Zeichenfolge <%= Int32.Parse("58") %> als Ganzzahl zu analysieren (und fehlschlägt).

Verwandte Themen