在主题中使用数据绑定和表达式
请注意,在主题模板中使用<%# Eval %>或<%# Bind %>的数据绑定也是有效的,但是不允许使用其它的代码数据绑定或表达式。
Databinding.skin内容
| <asp:DataList RepeatColumns="2" CellPadding="20" runat="server"> <ItemTemplate> <h3><asp:Label ID="titleLabel" runat="server" Text='<%# Eval("title") %>'/></h3> <asp:Image ImageUrl='<%# Eval("title_id", "Images/{0}.gif") %>' runat="server" /> <b>ID:</b> <asp:Label ID="title_idLabel" runat="server" Text='<%# Eval("title_id") %>'/><br /> <b>Type:</b> <asp:Label ID="typeLabel" runat="server" Text='<%# Eval("type") %>'/><br /> <b>Price:</b> $ <asp:Label ID="priceLabel" runat="server" Text='<%# Eval("price") %>'/><br /> <asp:TextBox TextMode="MultiLine" Rows="5" Columns="40" ID="notesLabel" Text='<%# Eval("notes") %>' runat="server"/><br /> </ItemTemplate> </asp:DataList> |
主题和配置
你可能希望终端用户动态地为应用程序选择和应用主题。通过把活动主题存储在用户配置中,你可以根据用户的喜好动态的应用主题。为了实现这种功能,你需要编写代码来应用主题,而不能使用@Page指令或Web.config中宣告式的方法。
在代码中指定主题
为了在代码中应用主题,你必须在运行时设置Page(页面)对象的Theme属性。在请求的生命周期的早期(在PreInit事件中),你就必须给页面应用主题。在下面的例子中,用户从下拉列表控件中选择主题名称的时候,在PreInit事件中会动态地应用主题。
| <script runat="server"> Protected Sub Page_PreInit() Page.Theme = Server.HtmlEncode(Request.QueryString("Theme")) End Sub </script> |
| <%@ Page Language="VB" Theme="Default" %> <script runat="server"> Protected Sub Page_PreInit() If Not Profile.FavoriteColor = "" Then Page.Theme = Profile.FavoriteColor End If End Sub </script> <asp:Label ID="Label1" runat="server" Text="Welcome to my page. Please login with User=Test, Password=Test@1234"></asp:Label><br /> <asp:Login ID="Login1" runat="server" /><br /> <asp:LoginView ID="LoginView1" runat="server"> <LoggedInTemplate> <asp:HyperLink ID="HyperLink1" NavigateUrl="Profile_cs.aspx" Text="Edit Profile..." runat="server" /><br /> <asp:LoginStatus ID="LoginStatus1" runat="server"/> </LoggedInTemplate> </asp:LoginView> |
| <script runat="server"> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) If Not Page.IsPostBack AndAlso Not Profile.FavoriteColor = "" Then DropDownList1.DataBind() End If End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Profile.FavoriteColor = DropDownList1.SelectedValue Response.Redirect("ProfileTheme_cs.aspx") End Sub </script> <b>Favorite Color:</b> <asp:DropDownList ID="DropDownList1" SelectedValue='<%# Profile.FavoriteColor %>' runat="server"> <asp:ListItem Value="OrangeTheme">Orange</asp:ListItem> <asp:ListItem Value="GreenTheme">Green</asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click" /> |

