2012-02-15 34 views
18

Tôi đang cố gắng kiểm tra giá trị chuỗi bên trong bộ lặp, và nếu nó có giá trị thì hãy viết liên kết, nhưng dường như không làm cho nó hoạt động. Nếu có một giá trị trong myUrl thì tôi muốn hiển thị liên kết.#Eval if statement in repeater

<%if(%> <%#Eval("myURL").ToString().Length > 0 %> 
     <a title="myTitle" target="_blank" href="<%# Eval("myURL") %>">my link</a>     
<% } %> 

Mọi người có thể vui lòng trợ giúp không?

Trả lời

25

thử này mã !!!

<%#Eval("myURL").ToString().Length > 0 ? 
"<a title='myTitle' target='_blank' href='<%# Eval("myURL") %>'>my link</a>":""%> 
+0

tuyệt vời - cảm ơn rất nhiều! – Wildcat

+10

Về mặt kỹ thuật nhưng thực sự khiêu dâm nhìn .. –

+1

tôi hy vọng nhiều người không bao giờ sử dụng câu lệnh có điều kiện ... đó là vấn đề ... – Madhu

19

Cá nhân tôi ghét sử dụng logic có điều kiện như vậy trong trang.

Có hai tùy chọn mà tôi nghĩ là tốt hơn. Bạn có thể có một điều khiển Hyperlink trong bộ lặp - và thiết lập mức hiển thị phụ thuộc vào nếu tham số myURL có ở đó không.

visibility='<% #Eval("myURL").ToString().Length > 0 %>' 

HOẶC những gì bạn có thể làm là có một phương pháp trên mã của bạn mà bạn gọi lại với thông số "myURL".

Ví dụ:

public string CreateURL(string myURL){ 
    if(!string.IsNullOrEmpty(myURL)){ 
     return "<a ... "; 
    } 

    return string.Empty; 
} 

Và gọi trong ASPX

<%# CreateURL(Eval("myURL").ToString()) %> 

NB này là mã chưa được kiểm tra nhưng đây là cách tôi thường làm việc này.

+0

này nên là việc trả lời –

2

Hãy thử thêm một runat="server" và sau đó thêm một khối kịch bản cho (mới) server-side tài sản hữu hình:

<a title="myTitle" target="_blank" href="<%# Eval("myURL") %>" runat="server" visible='<%#Eval("myURL").ToString().Length > 0 %>'>my link</a> 
5

Tôi sẽ sử dụng String.Format và bao gồm HTML như một phần của chuỗi. Phải thừa nhận rằng, nó không phải là mảnh neatest mã từng được viết, nhưng theo ý kiến ​​của tôi đó là lựa chọn tốt nhất:

Ví dụ ý dưới đây ra một thẻ neo nếu tài sản Url tồn tại, nếu không nó sẽ ra một khoảng thời gian.

<%# string.Format(Eval("Url") != null ? "<a href=\"{0}\">{1}</a>" : "<span>{1}</span>", Eval("Url"), Eval("Text")) %>"> 
0

Bạn cũng có thể gọi chức năng công cộng của bạn bên trong mã sau file:

<%# MyFunction(Eval("myURL").ToString().Length) %> 
Các vấn đề liên quan