ASP.NET服务器控件属性必须是必需的属性

4
我有一个自定义的ASP.NET服务器控件CustomControl,其中包含属性Path

如果没有明确指定Path,则希望抛出异常。

例如,

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

应该编译,而

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

我知道可以在Path属性的getter方法中实现此功能,但是否有某些属性需要这样做呢?

更新

除了在代码后台属性的getter方法中使用之外,是否有验证属性属性值的机制?


4个回答

7
在自定义控件的 init 事件中,您可以检查此内容并抛出异常。 更新 有一个; 在初始化事件中进行检查。由于控件的 init 调用在宿主的(页面或用户控件)init 事件之后,因此如果其为 null 或为空,则可以抛出异常。

1

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

毕竟,属性值可能会在页面加载或类似事件的代码后端中提供。


对于我的使用情况,这不是一个问题。 - smartcaveman

0

没有必要这样做的属性。最好的地方是在Path属性的getter中实现。


你可以编写自己的属性。 - light
1
如果没有任何处理它们的东西,编写属性就没有什么用处。 - smartcaveman

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接