[英]How to add enum properties to a WebControl
編輯:看起來可能是Visual Studio問題。 如果我重新啟動Visual Studio,則在重新生成解決方案之前它將一直有效。
使用以下代碼時,在設計器中出現“無法在屬性“ MyMode”上設置“ B””異常:
public class MyControl : CompositeControl
{
public enum MyEnum{ A, B }
[DefaultValue(MyEnum.A)]
public MyEnum MyMode
{
get
{
object obj = ViewState["MyMode"];
return obj == null ? MyMode.A : (MyEnum)obj;
}
set
{
ViewState["MyMode"] = value;
}
}
}
重現:在項目中創建控件。 將控件拖到另一個項目中的Web窗體上。 在屬性窗口中設置MyMode =B。 關閉窗體,重新打開設計器。
我究竟做錯了什么? 我需要手動將字符串解析為枚舉嗎?
編輯:設計器生成的代碼。
<cc1:MyControl ID="MyControl1" runat="server" MyMode="B" />
編輯:實際上,此屬性也將失敗:
public MyEnum MyMode
{
get
{
return MyEnum.A;
}
set{}
}
您試圖將值設置為字符串“ B”。 您需要將其設置為數值,因為這就是枚舉。
...
set
{
ViewState["MyMode"] = value; // <-- 'value' must be an integer equivalent to B
// in this example, to set as 'B', 'value' == 1
}
...
編輯看這篇文章
這是Visual Studio 2008 SP1錯誤
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=361826
請注意,實際上有兩個修補程序發布,如以下所述: http : //support.microsoft.com/kb/961847
一個用於Windows XP和2009,而另一個用於Windows Vista和Windows Server 2008。
Windows XP和2003: http : //support.microsoft.com/kb/969612/
Windows Vista和Windows Server 2008: http : //support.microsoft.com/kb/967535/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.