【问题标题】:Behavior of a disabled TextBox on post-back in asp.net webforms在 asp.net webforms 中回发时禁用的 TextBox 的行为
【发布时间】:2019-01-29 04:46:44
【问题描述】:

我正在阅读有关禁用与只读之间的区别,我了解到,使用禁用字段时,数据不会在回发时发回。 但是我有一个带有如下文本框的网络表单页面:

<asp:TextBox runat="server" ID="vPlantNameTB" Text="" Enabled="false"></asp:TextBox>

在页面加载时,我将vPlantNameTB 的值设置为某个值。 (而不是空白)。 因为我禁用了这个文本框。我希望 TextBox 的值在回发时为空白。但事实并非如此……

我能够在回发期间获得我在页面加载时设置的值。
对于网络表单,这种行为是否正常?

【问题讨论】:

  • 这是正常的,你不能得到改变的值(例如使用JQuery改变值,回发不起作用)

标签: c# asp.net .net webforms postback


【解决方案1】:

简而言之:

是的,因为值来自您的视图状态,而不是表单。

对于一个稍微复杂的答案...

vPlantNameTB 提交的表单数据(可通过Request.Form 访问)将丢失,因为它已被禁用,因此浏览器不会将其发送到服务器。

发送到服务器的表单数据中还包含一个隐藏输入(由 .Net 引擎生成),称为 __VIEWSTATE,它的值是一个 base64 编码的字符串,代表页面的当前状态。

页面状态自动序列化到呈现的网页并在表单发布时自动反序列化(反序列化过程还处理与您的页面控件的重新关联,这就是为什么vPlantNameTB 在您的回发处理程序中再次具有值的原因) .

Scott Mitchell 有一个decent article about ViewState on MSDN,它很好地描述了这个过程。

【讨论】:

    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多