禁用.NET控件是否会阻止它回发

时间:2009-02-26 17:31:51

标签: asp.net forms controls

我有一个基于select(下拉菜单)的自定义ASP控件。如果我通过在其html中添加单词“disabled”来禁用我的控件,我在处理表单数据时会开始出现空指针错误。

我认为,浏览器不会回发禁用的表单项,或者ASP.NET在处理表单数据时忽略它们。我不确定它是哪一个。我想知道我在哪里丢失数据。

感谢您的帮助。

PS。我意识到有更好的方法来创建和禁用控件而不是手动编辑html,但这里有一个上下文,不允许我这样做。

2 个答案:

答案 0 :(得分:5)

是设置控件的Enable = false会阻止控件的值添加发布数据集合。

您可以改用readonly attribute

这里的MSDN说:

  

TextBox控件的Text值   将ReadOnly属性设置为true   在回发时发送到服务器   发生,但服务器没有   处理只读文本框。   这可以防止恶意用户   更改文本值   只读。文本的值   酒店保留在景观中   回发之间的状态,除非   由服务器端代码修改。

此处还有Microsoft's reply与主题相关的错误报告。

但如果你以经典的方式使用它会起作用:

txt2.Attributes.Add("readonly", "readonly");

答案 1 :(得分:0)

它会阻止控件回发,但请记住这个Web范例是客户端/服务器技术。一个人可以修改客户端数据(HTML和/或Javascript)并强制回发,无论你发送什么。

因此,不要依赖此操作来进行安全敏感操作,例如操纵金钱等。

对于敏感操作,也要在服务器端进行检查。