0

我有一个MasterPage包含隐藏字段控件。我想获取隐藏字段的当前值并从使用MasterPage.

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

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

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

4

4 回答 4

5

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

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

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

在您的页面中:

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

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

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

于 2012-04-27T09:54:11.073 回答
2

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

改为这样做:

HiddenField hiddenField = (HiddenField)Master.FindControl("txtHiddenField");
hiddenField.Value = "true";
于 2012-04-27T09:53:48.820 回答
1

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

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

你可以像-->>一样访问它

HtmlInputHidden hiddenfield = (HtmlInputHidden)this.Master.FindControl(
于 2012-04-27T09:52:54.877 回答
1

可能是你失踪了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!";
        }
    }

阅读有关参考 ASP.NET 母版页内容的更多信息

于 2012-04-27T09:54:48.063 回答