在下面的代码中,我创建了一个类,其中一个属性是枚举类型。例如
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Bubble
{
public enum Shape{ Circle, Square, Triangle };//enum type definition
[ToolboxData("<{0}:BubbleFigure runat=\"server\"></{0}:BubbleFigure>")]
public class BubbleFigure : CompositeControl
{
//This version
public Shape FigureShape
{
get;set;
}
//or this other version
//of course they are not both included at the same time
public Shape FigureShape
{
get
{
return ViewState["FigureShape"] == null ? Shape.Circle :
(Shape)ViewState["FigureShape"];
}
set { ViewState["FigureShape"] = value; }
}
}
}
在设计(来源)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="Root.Default" %>
<%@ Register Assembly="Bubble" Namespace="Bubble" TagPrefix="bbl" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<bbl:bubblefigure runat="server"></bbl:bubblefigure>
</div>
</form>
</body>
</html>
在编译(构建解决方案)时,不会显示任何错误,但会成功编译。控件很好地加载到工具箱中。在源中删除控件时,将显示以下内容
<bbl:bubblefigure runat="server"></bbl:bubblefigure>
而不是
<bbl:BubbleFigure ID="BubbleFigure1" runat="server"/>
我们的想法是允许选择形状
<bbl:BubbleFigure ID="BubbleFigure1" runat="server" FigureShape="Circle"/>
但
时FigureShape=""
添加了应该列出的选项的下拉列表,例如在布尔类型的情况下显示true或false,或者显示所有颜色选项的Color的情况。
例如,当我将类型Shape更改为String时,它在标记前缀上没有问题,但是当应该限制时输入是打开的。
我尝试在web.config上注册,添加程序集属性等等。
此代码使用Visual Studio 2013,2015 for Web Developer运行。
请任何帮助将深表感谢。