4

我有一个CustomControl带有属性属性的自定义 ASP.NET 服务器控件Path

如果Path未明确指定,那么我希望抛出异常。

例如,

<myControls:CustomControl Path="somedirectory/someotherdirectory/somefile.ext" runat="server" />

应该编译,并且

<myControls:CustomControl runat="server" />应该抛出异常。

我意识到我可以在Path属性的 getter 中做到这一点,但是是否有一些属性需要这样做?

更新

除了在代码隐藏属性的 getter 方法中使用之外,是否有任何机制可以验证属性属性的值?

4

4 回答 4

7

您可以在自定义控件的 init 事件中检查这一点,并引发异常。

更新

有; 在初始化事件中检查它。在主机(页面或用户控件)的 init 事件之后调用控件的 init。因此,如果它为 null 或为空,您可以抛出异常

于 2011-03-11T18:33:40.527 回答
1

我认为这不应该是编译时检查。

毕竟,属性值可能在 page_load 或类似事件期间的代码中提供。

于 2011-03-11T18:33:24.240 回答
0

没有必要的属性。执行此操作的最佳位置是 Path 属性的 getter。

于 2011-03-11T18:33:03.140 回答
0

不,没有办法强制页面框架这样做。您需要在运行时在代码中执行此操作,如果未提供该值,则引发异常。否则我们永远不会遇到“废话,我忘记了 runat=server 部分”错误 :)

于 2011-03-11T18:33:39.147 回答