2011-11-14 29 views
5

Tôi đang lưu trữ tên và họ trong hai nhãn trong trang chính. Tôi cũng có những giá trị trong một lớp (lớp không làm nhiều nhưng tôi đang sử dụng chúng để mở rộng trong tương lai). Tôi có một điều khiển người dùng sẽ gửi một email có tên và họ là cơ thể.Vượt qua các giá trị từ trang đến điều khiển người dùng

Câu hỏi của tôi là làm thế nào tôi có thể chuyển giá trị biến của nhãn hoặc lớp vào biến thân của kiểm soát người dùng?

+0

Trong đó môi trường mà usercontrol là tạo? –

+0

Tôi xin lỗi, tôi mới sử dụng ASP.NET và C# bạn có ý nghĩa gì về môi trường? –

+0

Điều đó có nghĩa là liệu usercontrol có thuộc về ajax không? –

Trả lời

25

Tạo một tài sản trên điều khiển người dùng của bạn với các kiểu dữ liệu của dữ liệu bạn muốn vượt qua nó, và cư nó trong trang của bạn trên tạo ra sự kiểm soát.

public class myUserControl : Control 
    { 
     ... 
     public int myIntProperty {get; set;} 
     ... 
    } 

Sau này trong mã đằng sau bạn có thể gán giá trị như

myUserControl cntrl = new myUserControl(); 
    cntrl.myIntProperty = 5; 

Thay vì điều này, bạn có thể vượt qua các giá trị thông qua Markup cũng như

<uc1:myUserControl ID="uc1" runat="server" myIntProperty="5" /> 
+0

Cảm ơn ... không có lỗi và làm việc tốt Thực sự đánh giá cao nó –

2

Bạn cần tạo thuộc tính trên bộ điều khiển để giữ các giá trị này; sau đó từ mã trang, chỉ cần gán các giá trị cho các thuộc tính trong điều khiển.

On kiểm soát của bạn, bạn có thể có một cái gì đó giống như

public string FirstName 
{ 
    get { 
    if (ViewState["FirstName"] == null) 
     return string.Empty; 
    return ViewState["FirstName"].ToString(); 

     } 
     set { 
      ViewState["FirstName"] = value; 
     } 
} 
1

Bước 1: Bạn có thể expost các giá trị như bất động sản và hơn bạn có thể tận dụng điều đó một cách dễ dàng.

Bước 2: Để truy cập trang của bạn từ điều khiển người dùng, bạn có thể sử dụng tài sản Parent hoặc đăng nhập để truy cập trang gốc và viết mã để tiêu thụ giá trị thuộc tính.

+0

câu trả lời của chúng tôi đáp ứng giữa chừng :) – ViSu

0

bạn có thể làm một cái gì đó như thế này trong điều khiển người dùng của bạn

string x=((yourparentcontrol)this.parent).label1.text; 

và sử dụng chuỗi x.

+0

đã cố gắng .. nó cho tôi một lỗi Từ khóa 'này' không có sẵn trong ngữ cảnh hiện tại –

1

Bạn cần xác định thuộc tính công khai trên điều khiển và sau đó khi bạn sử dụng điều khiển trên trang, bạn có thể chuyển giá trị cho các thông số đó.

Cái gì như:

<cc:mycustomControl runat="server" 
    MyProperty1=<%# label1 %> 
    MyProperty2=<%# label2 %> 
/> 
+0

theo cách này nếu tốt khi chỉ có một vài điều khiển để vượt qua nhưng với mã số lớn sẽ bị lộn xộn Tôi có thể chuyển giá trị theo cách khác không? –

+0

Không chắc chắn tôi nhận được nó. Tại sao nó lộn xộn. Những gì bạn có nghĩa là vượt qua theo cách khác? Liệu nó có quan trọng cú pháp chính xác của cách bạn vượt qua nó? –

+0

Tôi có nghĩa là viết dòng cho mỗi tài sản sẽ làm cho mã dài hơn Tôi vẫn còn màu xanh lá cây vì vậy tôi đang cố gắng đi theo cuốn sách ..code dài hơn, nhiều cơ hội sai lầm –

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