2009-09-08 27 views
36

này hoạt động:Làm cách nào để sử dụng các thẻ <% = ASP.NET trong các thuộc tính điều khiển máy chủ?

<span value="<%= this.Text %>" /> 

này không hoạt động:

<asp:Label Text="<%= this.Text %>" runat="server" /> 

Tại sao vậy?

Tôi làm cách nào để trường hợp thứ hai hoạt động chính xác, tức là, đặt văn bản của nhãn thành giá trị của biến "Văn bản"?

+0

thể trùng lặp của [Tại sao <%= %> biểu như các giá trị tài sản trên một máy chủ điều khiển sẽ dẫn đến một lỗi biên dịch? ] (http://stackoverflow.com/questions/370201/why-will-expressions-as-property-values-on-a-server-controls-lead-to-a-co) – zzzzBov

Trả lời

5

Không chắc làm thế nào để đánh dấu đây là như vậy, nhưng đây là một chút của một trùng lặp. See this thread.

Tôi không nghĩ rằng nhúng mã vào đánh dấu của bạn sẽ thực sự làm cho đánh dấu của bạn rõ ràng hơn hoặc thanh lịch hơn.

+2

Nhận xét muộn: Tôi nghĩ việc thiết lập nội dung nào đó giống như văn bản cho một nút đến một biến hoặc hàm đơn giản có ý nghĩa hơn trong đánh dấu hơn trong mã phía sau. Đặc biệt là nếu bạn có nhiều nút được thiết lập với văn bản = "chữ", nhưng một hoặc hai cần một số mã, nó gây phiền nhiễu mà hầu hết được đặt trong đánh dấu nhưng các ngoại lệ nằm trong đoạn mã phía sau. Bây giờ tôi không chỉ phải nhìn vào hai nơi để xem các giá trị văn bản, nhưng tôi phải tìm kiếm địa điểm trong mã phía sau. Tôi chắc chắn sẽ không đưa mười trang mã vào đánh dấu, nhưng một "văn bản = <% = foo.bar% > có vẻ rất hữu ích. Bất kể điều gì. – Jay

+1

Trong thế giới thực thường nhận được một cái gì đó làm việc trumps làm một cái gì đó rõ ràng hơn hoặc thanh lịch hơn –

7

<asp:Label> được biên dịch vào thời gian chạy và chuyển đổi thành thẻ html. Bạn có thể đặt văn bản với codebehind hoặc như thế này:

<asp:Label id="Text1" runat="server" /> 
<% Text1.Text = this.Text;%> 

UPD: Có vẻ như công việc doesnt biến thể của tôi, đây là tốt hơn:

protected void Page_Load(object sender,EventArgs e) 
{ 
    Text1.Text = this.Text; 
} 
6

Bạn sẽ cần phải thiết lập giá trị của điều khiển máy chủ trong mã

Trước hết, gán một ID để kiểm soát nhãn để bạn có thể truy cập kiểm soát

<asp:Label ID="myLabel" runat="server" /> 

Sau đó, trong chức năng Page_Load của bạn, thiết lập giá trị của các nhãn 'Text' lĩnh vực

protected void Page_Load(object sender, EventArgs e) 
{ 
    myLabel.Text = 'Whatever you want the label to display'; 
} 

Chức năng này sẽ được trong mã của bạn đằng sau tập tin, hoặc, nếu bạn không sử dụng mã đằng sau mô hình, bên trong trang aspx của bạn, bạn sẽ cần

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     myLabel.Text = 'Whatever you want the label to display'; 
    } 
</script> 

Chúc may mắn.

44

Sử dụng Data binding expressions

<asp:Label ID="Label1" runat="server" Text="<%# DateTime.Now %>" ></asp:Label> 

Mã phía sau,

protected void Page_Load(object sender, EventArgs e){ 
    DataBind(); 
} 
7

Trong mã của tôi tôi đang sử dụng một cái gì đó như thế này một cách dễ dàng nhưng trong việc kiểm soát databound như ListView mục mẫu

<asp:HyperLink ID="EditAction" class="actionLinks" Visible='<%#Eval("IsTrue").ToString() != "True"%>' runat="server" NavigateUrl='<%# Eval("ContentId","/articles/edit.aspx?articleid={0}")%>' /> 

Nhưng khi tôi đã cố gắng để sử dụng bên ngoài sự kiểm soát databound sử dụng <% # ..%>, nó đơn giản là không hiệu quả.

Bạn có thể dễ dàng làm với

<a href="<%=myHref%>">My href</a> 

Nhưng đối với điều khiển máy chủ, và ngoài tầm kiểm soát databound.Chúng tôi cần phải gọi DataBind() trong sự kiện pageload rõ ràng

<asp:Hyperlink ID="aa" NavigateUrl='<%#myHref%>' > 
12

bạn có thể làm điều này

<asp:Label ID="Label1" runat="server" ><%= variable%></asp:Label> 
+1

Đây phải là câu trả lời được chấp nhận. Không yêu cầu databind. – JohnOpincar

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