首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

Repeater 控件中使用 Eval 動態綁定 Style 屬性

     編輯:ASP.NET 基礎

單行內嵌寫法

<a onclick='PayOpenItem(<%# Eval("OID") %>)' id="ToPay" href="#"
   style='display: <%# Eval("OStatus").ToString().Equals("2") ? "block" : "none" %>'>
   付款</a>

關鍵點

  • 屬性值使用 單引號 包裹,避免與 Eval 雙引號衝突。
  • Eval("欄位") 回傳 object,需 .ToString() 後再比較。
  • 三元運算子 ? : 直接輸出 CSS 值。

進階:抽離至伺服器端方法

<a ... style='display: <%# GetDisplayStyle(Eval("OStatus")) %>'>
protected string GetDisplayStyle(object status)
{
    return status?.ToString() == "2" ? "block" : "none";
}

優點:邏輯集中、可複用、易單元測試、避免 .aspx 混雜大量 C# 代碼。

適用於其他屬性

<div class='<%# GetCssClass(Eval("Type")) %>'>...</div>
<img src='<%# ResolveUrl("~/Images/" + Eval("ImgName")) %>' />
<input disabled='<%# (bool)Eval("IsDisabled") ? "disabled" : "" %>' />

注意事項

  • Eval 為晚期繫結,效能略低於 Bind 或強型別 ItemDataBound,但對中小數據量影響可忽略。
  • 若欄位可能為 DBNull,建議用 Convert.ToString(Eval("Col")) 或 Eval("Col")?.ToString()(C# 6.0+)防呆。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved