如何在母版页中获取隐藏字段控件并设置其值?

时间:2012-04-27 09:47:29

标签: c# asp.net

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

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

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

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

4 个答案:

答案 0 :(得分:5)

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

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

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

在您的信息页中:

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

这种方法很简单,不易出错,易于阅读。您甚至可以在不需要更改页面的情况下更改主页中的控件(例如,如果要使用TextBox替换隐藏字段)。

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

答案 1 :(得分:2)

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

请改为:

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

答案 2 :(得分:1)

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

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

您可以像 - &gt;&gt;

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

答案 3 :(得分: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!";
        }
    }

详细了解Reference ASP.NET Master Page Content