【问题标题】:Pass only predefined value to user control property仅将预定义的值传递给用户控件属性
【发布时间】:2013-01-14 05:59:36
【问题描述】:

我创建了一个用户控件并定义了属性,以便从 .aspx 页面传递值。作为下一步,我想定义用户控件可以在这些属性中接受的值。

例如,如果它是一个期望布尔值的属性,我希望能够选择真或假等。

不确定如何开始。

【问题讨论】:

  • 有问题的地方能提供一些代码吗?
  • 它不是代码,我试图找出设置代码的方法。这是关于让 Intellisense 与我的用户控件一起工作

标签: asp.net properties user-controls


【解决方案1】:

你的问题有点含糊,但这里是:

  1. 如果您的属性是布尔值,则只有 2 个可能的值,因此您无需再做任何事情。
  2. 如果您有一组整数值,则可以将它们设置为 Enum。
  3. 如果您有一组字符串值,最好将它们改造成一个 Enum 并使用多种技术之一(询问您是否需要)将文本与数值相关联。

所有这些都假设离散值。如果您有一系列连续值(-1.000 到 1.000 或类似的值),您可能需要在属性的 Getter 和 Setter 中编写验证代码。另一种选择是在您的基础模型上使用 DataAnnotations。

如果您只需要知道如何防止将不良数据输入到用户控件中的 Web 控件中,则需要研究验证控件。

【讨论】:

  • 但是如何在开始为 usercontrol 属性输入值时获取可能值的列表。例如 UserControl.Readonly = ... 我只想获取 true 和 false 作为可能的值
  • 啊,所以您是说让 Intellisense 在 HTML 编辑器中与您的用户控件一起工作?您可能应该重写(并重新命名)您的问题以明确这一点。
  • 如果我知道我在说什么,我就不会问这个问题了:)
  • 我最终得到了 this.EmailClient1.BodyType = Admin.Web.Controls.EmailClient.BodyTypeValues.html;有没有办法让 this.EmailClient1.BodyType = html;?
  • 在代码隐藏中?不,不幸的是:您必须指定 Enum 的名称,然后指定您想要的值。但是您可以通过将using 语句放在文件顶部将其减少到BodyTypeValues.htmlusing Admin.Web.Controls.EmailClient;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
相关资源
最近更新 更多