代码之家  ›  专栏  ›  技术社区  ›  Slim

检索asp:TextBox的值

  •  4
  • Slim  · 技术社区  · 17 年前

    我有一个禁用的文本框,我正在用JavaScript在客户端编辑它的值。当我尝试在服务器端检索值时,它不会反映在客户端所做的更改。如果我将TextBox的enabled属性设置为true,我可以检索该值,但用户可以设置焦点并编辑TextBox。

    2 回复  |  直到 17 年前
        1
  •  6
  •   TheTXI    17 年前

    编辑 :根据OP的评论,这可能不会起作用。

    编辑2 :来自DotNetSlackers:

    那么这两者之间有什么区别呢 两者之间有两个区别 这两个属性,一个微不足道的 这是一个微妙而深刻的区别:

    1. 呈现的HTML。当你设定 ReadOnly属性设置为True时 属性readonly=“readonly”为
    2. 根据W3C关于HTML表单的规范,禁用的控件是不存在的 可能是“成功的”。一个“成功的” 控件是其名称/值对的控件 将通过发送回浏览器 文章标题或查询字符串。 已发送回ASP.NET页,而 在用户代理上。(在我的测试中 IE 6和FireFox 1.5一起发送

    ......

    如果在中遇到此问题 您可能拥有的ASP.NET版本1.x 启用为False。你还是可以的 页面的视图状态已禁用并设置为 属性,因为 文本框值通过 以只读方式提交表格 控制。但是,在ASP.NET版本中 Rick Strahlin在他的博客中指出,在2.0版本中,情况只发生了一点变化 当EnableViewState为false时。具有 在2.0版本中,TextBox控件的sReadOnly属性的行为已更改 轻微地从技术文档中:

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

    发生的情况是客户端发送 沿只读 文本框通过表单值,但 ASP.NET 2.0引擎不接受 回发到时文本框的属性 更改只读文本框值 他们自己但这让我们回到了过去 我们前面的问题-如果 未在回发中指定(或 在本例中已忽略)和ViewState

    瑞克的枪是手动的 请求[this.TextBox1.UniqueID];), 这会带来安全风险和 介绍了2.0的问题 地址。最佳方法是 重新查询数据库中的值 以编程方式设置

    这篇博文的寓意是如果 您拥有可以使用的只读数据 禁用或只读窗体 菲尔兹,这真的没关系 无论你是否收到回执 意见书。这不要紧 信任/使用该数据开始 具有如果您有只读数据, 最终用户可以修补!

    Source

        2
  •  5
  •   Rob    17 年前

    正如您所发现的,浏览器不会将值返回到禁用的输入控件中。解决这个问题最简单的方法可能是钩住表单提交,并在表单提交时重新启用输入;用户将没有机会编辑该值,它应该与请求的其余部分一起发布。

    推荐文章