我有一个基于select(下拉菜单)的自定义ASP控件。如果我通过在其html中添加单词“disabled”来禁用我的控件,我在处理表单数据时会开始出现空指针错误。
我认为,浏览器不会回发禁用的表单项,或者ASP.NET在处理表单数据时忽略它们。我不确定它是哪一个。我想知道我在哪里丢失数据。
感谢您的帮助。
PS。我意识到有更好的方法来创建和禁用控件而不是手动编辑html,但这里有一个上下文,不允许我这样做。
答案 0 :(得分:5)
是设置控件的Enable = false会阻止控件的值添加发布数据集合。
您可以改用readonly attribute。
这里的MSDN说:
TextBox控件的Text值 将ReadOnly属性设置为true 在回发时发送到服务器 发生,但服务器没有 处理只读文本框。 这可以防止恶意用户 更改文本值 只读。文本的值 酒店保留在景观中 回发之间的状态,除非 由服务器端代码修改。
此处还有Microsoft's reply与主题相关的错误报告。
但如果你以经典的方式使用它会起作用:
txt2.Attributes.Add("readonly", "readonly");
答案 1 :(得分:0)
它会阻止控件回发,但请记住这个Web范例是客户端/服务器技术。一个人可以修改客户端数据(HTML和/或Javascript)并强制回发,无论你发送什么。
因此,不要依赖此操作来进行安全敏感操作,例如操纵金钱等。
对于敏感操作,也要在服务器端进行检查。