【发布时间】: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