【问题标题】:Retrieving MasterPage textbox Control on a postback to another page在回发到另一个页面时检索 MasterPage 文本框控件
【发布时间】:2012-12-05 01:28:10
【问题描述】:

我花了两天时间试图找出这个问题的解决方案,甚至尝试了 ExpertExchange,但我仍然无法得到解决方案。我是 ASP.Net(使用 C#)的新手程序员,我不想使用字符串/url 帖子

我有一个 MasterPage,其中有一个名为 tbSearchString 的文本框。这是一个简单的框,用户可以输入一些内容,然后它会回发到另一个页面 SearchResults.aspx 所以我还有其他页面,例如使用 MasterPage 的 Default.aspx。

我几乎尝试了所有方法,并且阅读了我在网上可以找到的几乎所有帖子,无论变量总是为空。

我在 searchResults loadpage 事件中使用了此代码,并且这些变量中的每一个都是空的,即使我在页面文本框中输入了一个值并单击按钮回发到 SearchResults 页面,它唯一有效的时间是如果我在 searchResults 页面上并提交。

搜索结果后端页面

protected void Page_Load(object sender, EventArgs e)
{

    TextBox SearchString;
    TextBox SearchString2;
    TextBox SearchString3;
    TextBox SearchString5;   

    if (Page.PreviousPage != null)  //This is true on every test
    {

        SearchString = (TextBox)Page.PreviousPage.Master.FindControl("tbSearchString");
        SearchString2 = (TextBox)PreviousPage.Master.FindControl("tbSearchString");
        SearchString3 = (TextBox)Master.FindControl("tbSearchString");
        TextBox LoginControlx = (TextBox)PreviousPage.FindControl("Form1");

       if (LoginControlx != null)
        {
          TextBox SearchString4 = (TextBox)LoginControlx.FindControl("tbSearchString");
        }
  }

MainWebsite.Master 页面代码

<asp:TextBox ID="tbSearchString" runat="server"></asp:TextBox>
                <asp:Button ID="btnSearch1" runat="server" Text="Search" PostBackUrl="~/SearchResultRentalEquiptment.aspx" />

我在 CS 后端页面中没有任何内容

所以在 Default.aspx 页面上

没什么特别的 只是母版页和一些文本内容,我在文本框中输入一些文本会转到 SearchResults 页面,但我无法从 Default 或任何其他页面的 Textbox 控件中获取该值。

聪明人怎么说?

【问题讨论】:

    标签: c# asp.net master-pages


    【解决方案1】:

    如何将表单重定向到搜索结果表单?如果您使用的是 Response.redirect,Page.PreviousPage.Master.FindControl 下的值将为 null 。尝试使用 Server.Transfer 看看它是否有效。

    【讨论】:

      【解决方案2】:

      这是一种方法:

      假设这是您的母版页代码:

      <asp:TextBox ID="searchbox" runat="server" /><br />
      <asp:Button ID="sendSearch" runat="server" PostBackUrl="~/Results.aspx" Text="Search" />
      

      归根结底,都是关于HTTP POST,所以在目标页面Results.aspxPageLoad

      protected void Page_Load(object sender, EventArgs e)
      {
          string _foo = Request.Form[this.Master.FindControl("searchbox").UniqueID];
      }
      

      第……

      【讨论】:

        【解决方案3】:

        查看Session。当我需要从一页到另一页获取数据时,我一直使用它。我目前无法为您写出完整的示例,但在我的脑海中,以下应该可以工作:

        //page1.aspx:
        
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
             string greetingString = "Hello";
             Session["MyValue"] = greetingString;
             Response.Redirect("page2.aspx");
        }
        
        //page2.aspx:
        
        protected void Page_Load(object sender, EventArgs e)
        {
             Response.Write(Session["MyValue"].ToString());  //prints "Hello"
        }
        

        【讨论】:

          猜你喜欢
          • 2012-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-15
          • 2018-03-23
          • 1970-01-01
          • 1970-01-01
          • 2016-04-01
          相关资源
          最近更新 更多