2009-12-01 35 views
12

Tôi đã phát triển một điều khiển ASP.NET mà một trong những thuộc tính là một [Flags] enum. Tuy nhiên, tôi dường như không thể chỉ định nhiều cờ cho thuộc tính này trong đánh dấu kiểm soát ASP.NET. Có một cú pháp đặc biệt để làm điều này hoặc là nó chỉ là không thể?ASP.NET kiểm soát tài sản với [Flags] enum

Trả lời

11

Có lẽ tôi hiểu sai câu hỏi, nhưng không có thể bạn đặt giá trị enum bằng chuỗi được phân tách bằng dấu phẩy.

Ví dụ: nếu tôi có tài sản trong kiểm soát của tôi này:

public System.IO.FileOptions Options { get; set; } 

Các tôi có thể thiết lập nó trong đánh dấu như thế này:

<uc1:MyControl ID="control1" runat="server" 
    Options="DeleteOnClose,Asynchronous" /> 
7

Chỉ cần tách riêng các cờ bằng dấu phẩy.

Test.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Test.ascx.cs" Inherits="Test" %> 
<asp:Label ID="lblTest" runat="server"></asp:Label> 

Test.ascx.cs

public partial class Test : System.Web.UI.UserControl 
{ 
    public TestEnum MyProperty 
    { 
     //coalesce was done to be lazy. sorry. haha. 
     get { return (TestEnum)(ViewState["te"] ?? TestEnum.One); } 
     set { ViewState["te"] = value; } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     lblTest.Text = MyProperty.ToString(); 
    } 
} 

[Flags] 
public enum TestEnum : int 
{ 
    One = 1, 
    Two = 2, 
    Four = 4, 
    Eight = 8 
} 

Test.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %> 

<%@ Register Src="~/Test.ascx" TagPrefix="test" TagName="Test" %> 
<form id="form1" runat="server"> 
    <test:Test ID="test" runat="server" MyProperty="Four,Eight" /> 
</form> 
Các vấn đề liên quan