2010-10-15 34 views
7

Tôi có một ascx chứaCách đặt thuộc tính Int của điều khiển trên ASCX?

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

Tôi muốn thiết Value với textbox1.Text, nhưng Value là một Int32. Tôi đang tìm kiếm một cái gì đó như thế này:

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

Nhưng tôi nhận được

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

Có cách nào để làm điều này vào file ascx? Tôi có phải triển khai TypeConverter cho thuộc tính này không?

Trả lời

7

Tôi không hiểu lý do tại sao bạn không thể chỉ cần sử dụng theo nghĩa đen thay vì một chuỗi đại diện:

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

Nếu bạn muốn thiết lập giá trị này tự động, bạn sẽ cần phải làm như vậy trong các mã sau hoặc trong một khối mã, ví dụ trong trường hợp tải trang xử lý, như bạn không thể sử dụng khối mã (<%%>) trong vòng một điều khiển phía máy chủ:

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

hoặc, trong ascx, ngoài các điều khiển phía máy chủ:

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

Vì vậy, không thể đặt 'Giá trị' bằng giá trị' textBox1.Text' trên tệp ASCX? – BrunoLM

+0

Bạn có thể làm điều đó với một khối mã, miễn là nó là _outside_ điều khiển. Xem câu trả lời được cập nhật. – Oded

7

Thay đổi nó để

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

Các ASP.Net phân tích cú pháp sẽ tự động phân tích thuộc tính số nguyên. Các biểu thức

<%= ... %> không được hỗ trợ cho điều khiển phía máy chủ, do đó mã của bạn khiến ASP.Net cố gắng (và không thành công) để phân tích cú pháp chuỗi <%= Int32.Parse("58") %> làm số nguyên.

Các vấn đề liên quan