自定义控件中的枚举类型属性会导致无法识别的标记前缀或设备过滤器"标记"

时间:2015-07-31 14:51:47

标签: enums custom-controls

在下面的代码中,我创建了一个类,其中一个属性是枚举类型。例如

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运行。

请任何帮助将深表感谢。

0 个答案:

没有答案