【问题标题】:Custom Control Enum property problems自定义控件枚举属性问题
【发布时间】:2013-05-13 14:23:26
【问题描述】:

我有两个项目的解决方案:

  • CustomControls 有自定义控件(.cs 文件)
  • WebPages 有 aspx 页面

其中一个控件具有如下属性:

----在Platform.CustomControls命名空间中定义-------

[Category("Search Mode"),
DefaultValue(SearchTextBoxModeEnum.global),
Personalizable(PersonalizationScope.Shared),
TypeConverter("String"),
WebBrowsable(true),
WebDisplayName("SearchTextBoxMode"),
WebDescription("SearchTextBoxMode")]

public SearchTextBoxModeEnum SearchTextBoxMode
{
  set;
  get;
}

----在Platform.CustomControls.Interface命名空间中定义-------

public enum SearchTextBoxModeEnum
{
  global,
  forms,
  products,
  internet
}

此项目构建成功。

当我在我的网页项目中引用此项目并在控件标记中添加属性时,所有其他枚举都会出现,但智能感知中不会出现“internet”。

<Platform:searchtextbox id="SearchTextBox3" runat="server" SearchTextBoxMode="internet"   pagename="xyz">
</OnlinePlatform:ecmssearchtextbox>

在浏览器中运行页面时出现错误:

无法从“SearchTextBoxMode”属性的字符串表示“internet”创建 Platform.CustomControls.Interface.SearchTextBoxModeEnum' 类型的对象。

我使用添加的引用检查了所有详细信息(在对象浏览器和 ILDASM.exe 中,我可以看到属性)。

【问题讨论】:

  • 我怀疑有一部分代码正在解析SearchTextBoxModeEnum。查找此枚举的所有引用。
  • 感谢您的回复。但是其余的属性都很好。除了将它添加到 SearchTextBoxEnum 之外,我没有做任何其他事情。至少我应该在代码标记中的智能感知中得到它。
  • 好的。但是,如果项目中的某个地方在枚举值上存在例如 switch 语句怎么办?现在您添加了“互联网”,您应该为这个新值添加一段代码来考虑。在枚举上按 Shift+F12 并检查其所有引用
  • 好的。像其他属性一样使用 SearchTextBoxModeEnum.internet.ToString()
  • 听起来像是 TypeConverter 的问题...您可以暂时不使用它来测试一下吗?

标签: c# asp.net custom-controls


【解决方案1】:

问题在于枚举属性。 VS2012 无法使用具有枚举属性的自定义控件呈现表单。

我已经向 Microsoft 发出了大约 1000 次这个问题的信号,但没有得到任何答复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 2016-12-11
    • 2013-02-20
    相关资源
    最近更新 更多