【问题标题】:How to get HiddenField control in Masterpage and set it's value?如何在母版页中获取隐藏字段控件并设置其值?
【发布时间】:2012-04-27 18:01:31
【问题描述】:

我有一个包含隐藏字段控件的MasterPage。我想获取隐藏字段的当前值并从使用MasterPage 的页面中设置它的值。

到目前为止,我有以下代码:(在其中一页中)

   //Get the textbox and set it's value
   TextBox txt1 = new TextBox();
                txt1 = (TextBox)this.Master.FindControl("txtHiddenField");
                txt1 .Text = "true";

上面的代码似乎不起作用。我需要什么代码来获取隐藏字段控件并设置它的值? (并获得它的价值)

【问题讨论】:

  • txtHiddenField 是 HiddenField 吗?然后使用 HiddenField 类型。你根本不需要使用构造函数,我为什么要创建一个实例来获取对另一个实例的引用?
  • 我猜应该是 ((TextBox)this.Master.FindControl("txtHiddenField")).Text = "True";

标签: c# asp.net


【解决方案1】:

我建议在您的 MasterPage 中提供一个公共属性/方法,您可以使用它来设置/获取 HiddenField 的值。

在你的主人(假设它的类型被称为SiteMaster):

public String HiddenValue { 
    get{return txtHiddenField.Value;}
    set{txtHiddenField.Value = value;}
}

在您的页面中:

SiteMaster master = (SiteMaster)Page.Master;
master.HiddenValue = "true";

这种方法直截了当,不易出错且易于阅读。您甚至可以更改母版中的控件而无需更改页面(例如,如果您想用文本框替换隐藏字段)。

假设您的 "true" 值表明您实际上想要存储布尔值,我建议使用 bool 作为属性的数据类型和不言自明的名称。然后您可以将其存储在隐藏字段中,但客户端(页面)不需要知道。

【讨论】:

    【解决方案2】:

    HiddenField 将其文本设置为 VALUE,而 TextBox 具有 TEXT 属性。当然,将一个转换为另一个并设置 text 属性将无济于事。

    改为这样做:

    HiddenField hiddenField = (HiddenField)Master.FindControl("txtHiddenField");
    hiddenField.Value = "true";
    

    【讨论】:

    • 它似乎没有找到该字段。隐藏字段 = 空。这可能有什么原因?
    【解决方案3】:

    假设你已经添加了这样的隐藏字段控件 ->>

    <input type="hidden" ID="hiddenFieldID" runat="server" />
    

    你可以像 -->>

    一样访问它
    HtmlInputHidden hiddenfield = (HtmlInputHidden)this.Master.FindControl(
    

    【讨论】:

      【解决方案4】:

      可能你错过了ContentPlaceHolder

      试试这样的

        ContentPlaceHolder mpContentPlaceHolder;
          TextBox mpTextBox;
          mpContentPlaceHolder = 
            (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
          if(mpContentPlaceHolder != null)
          {
              mpTextBox = 
                  (TextBox) mpContentPlaceHolder.FindControl("TextBox1");
              if(mpTextBox != null)
              {
                  mpTextBox.Text = "TextBox found!";
              }
          }
      

      阅读更多关于Reference ASP.NET Master Page Content

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-17
        • 1970-01-01
        • 1970-01-01
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多