【问题标题】:Making text box hidden in ASP.NET使文本框隐藏在 ASP.NET 中
【发布时间】:2010-12-20 22:00:23
【问题描述】:

我正在使用 ASP.NET 3.5 和 C#。

在我的页面上,我需要有一个文本框,该文本框不能对用户可见,但当您查看页面源代码时它必须存在,原因是,另一个名为 Eloqua 的程序将查看页面源代码并且它必须获取该文本框的值。

该文本框的值将根据用户的选择进行填充。

因此,我无法将文本框属性设置为 Visible = False,因为它不会在源 HTML 中,并且我无法设置 Enabled = False,因为我不希望用户看到文本框。

我是否可以使用某些属性使该文本框对用户隐藏但在页面源中仍然可见?

我的 ASP.NET 文本框

<asp:TextBox ID="txtTester" runat="server"></asp:TextBox>

【问题讨论】:

    标签: c# html asp.net


    【解决方案1】:
    【解决方案2】:

    您可以使用隐藏字段。

    <asp:HiddenField id="myHiddenInput" runat="server" />
    

    像文本框一样使用它。

    【讨论】:

    • 如果您需要活动,这将不起作用。隐藏字段不会触发更改事件。
    【解决方案3】:

    为什么不使用隐藏字段:

    <input type="hidden" name="blah" />
    

    【讨论】:

    • 因为我使用的是 ASP.NET,所以无法指定类型
    【解决方案4】:

    试试这个不可见的文本框而不是服务器端的可见属性:

    myTextBox.Style.Add("visibility", "hidden");
    // or :
    myTextBox.Style.Add("display", "none");
    

    【讨论】:

    • 隐藏字段无法在 codebutt 中获取/设置文本;所以,这是要走的路
    • @BenMcIntyre,那么原句是“hidden field could't get/set text in codeass”?哈哈哈哈
    • 好吧,也许我不得不说:'code behind'
    【解决方案5】:

    第一个想法:你可以使用隐藏字段吗?这会更合适( 如果你想要一个 .NET 控件)。

    如果应用程序不接受,您实际上可以将“style='display: none;'”放在页面的代码前面。 Intellisense 不会喜欢它,但它会渲染得很好(例如:

    您也可以从代码隐藏中执行 txtField.Attributes.Add("style", "display: none");

    或者你也可以给它一个 CssClass “隐藏”,在你的 CSS 中定义为“.hidden { display: none;}”

    我的建议是 CSS 类或仅使用隐藏字段。

    【讨论】:

      【解决方案6】:

      如果出于某种原因它必须是一个文本框,只需用 css 隐藏它:

      <input type="text" name="blah" style="display:none" />
      

      【讨论】:

      • 这解决了我的问题,由于某种原因,隐藏字段中的文本没有被检索到。所以我需要隐藏文本框。
      【解决方案7】:

      CSS:

      .hidden-div
      {
          display: none;
      }
      

      HTML:

      <div class="hidden-div">
          <input ... />
      </div>
      

      这将导致您的输入被隐藏,但它会在源代码中可见。

      编辑:对不起,我看错了。我以为你想隐藏输入。但无论如何都没关系,只需将输入替换为基本上任何内容即可。

      【讨论】:

      • display:none 可能是您想要的。隐藏的可见性会在他的表格中间留下一个空隙。
      • 愚蠢的错误,对不起。已编辑:)
      【解决方案8】:

      如何使用 CSS 隐藏包含文本框的 div:

      .hidden {
          position: absolute;
          left: -9999px;
      } 
      

      然后在你的页面内:

      <div class="hidden">
          <asp:TextBox ID="TextBox1" runat="server" Text="hi"></asp:TextBox>
      </div>
      

      希望这会有所帮助。

      【讨论】:

      • 这样漏掉了“隐藏”的概念,让任何读码者都认为有错误。
      【解决方案9】:

      通过在服务器端设置 Visible = "false" 将不会呈现控件。您应该使用asp:HiddenINPUT type="hidden"。其他选项是使用 CSS,通过设置 display:none.

      【讨论】:

        【解决方案10】:

        简单地说,尝试创建一个CSS class并将其附加到您的TextBox,如下所示:

        CSS 类样式

        <style>
            .Hide {
                display:none;
            }
        </style>
        

        使用CssClass="Hide"的文本框

        <asp:TextBox ID="txtTester" runat="server" CssClass="Hide"></asp:TextBox>
        

        注意:您不能对Hidden 控件使用验证

        【讨论】:

          猜你喜欢
          • 2010-10-15
          • 1970-01-01
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多