【问题标题】:Not able to get values when using PostBackURL in aspx page在 aspx 页面中使用 PostBackURL 时无法获取值
【发布时间】:2012-06-03 18:59:32
【问题描述】:

我有一个带有文本框和按钮的页面。我在这个按钮上设置了一个postbackurl,并在目标页面的加载事件上写了以下代码:

if (PreviousPage != null)
        {
            string name = ((TextBox)PreviousPage.FindControl("TextBox1")).Text;

            Response.Write(name);
        }

在使用调试器时,我发现我收到以下错误:

Object reference not set to an instance of an object. 

我无法弄清楚问题出在哪里,因为当我将鼠标悬停在 PreviousPage 上时,我可以看到首页名称,当我看到 TextBox1 的值时,它显示的是 {System.Web.UI.WebControls.TextBox},而不是我输入的值!

【问题讨论】:

  • 您使用什么将页面转移到另一个页面。 Server.TransferResponse.Redirect()
  • 两者都没有……只设置了第一页按钮控件的PostBackURL属性为abc.aspx。并在第二页的加载事件上写了上面的代码。
  • 好的..您正在使用上下文处理程序..
  • 根据我的信息,我没有使用上下文处理程序!可能是我错了,因为我是网络表单的新手。我只知道这个。
  • 提供您之前的页面标记.. 和接收页面名称

标签: c# asp.net


【解决方案1】:

设置PostBackUrl 时,您实际上是在将表单发布到目标页面。这意味着您应该能够使用Request.Form 访问该值:

string value = Request.Form["MyTextBoxValue"].ToString();

如果表单方法是GET,您应该可以通过QueryString访问值。

编辑

如果您只是需要将表单提交到另一个页面,您还可以考虑将表单action 更改为指向目标页面。然后您就可以使用Request 对象访问这些值。

【讨论】:

  • 我尝试过使用你的方法,但它不适用于 PostBackURL。
  • 您是否尝试过仅更改表单操作和方法,而不是使用PostBackUrl
【解决方案2】:

我现在可以获取文本框的值了。当使用带有母版页的 aspx 页面时,我们需要先获取 contentplaceholder 的引用,然后使用该引用来获取文本框的引用。

ContentPlaceHolder Content1 =(ContentPlaceHolder)PreviousPage.Master.FindControl("MainContent");
            TextBox SourceTextBox =
    (TextBox)Content1.FindControl("TextBox1");
       Response.Write(SourceTextBox.Text);

这将打印 textbox.text 的值。

【讨论】:

    【解决方案3】:

    您没有使用代码获取文本框的值的原因是您没有在 .Text 之后使用 .ToString()。它必须是:

    if (PreviousPage != null)
        {
            string name = ((TextBox)PreviousPage.FindControl("TextBox1")).Text.ToString();
    
            Response.Write(name);
        }
    

    试试看它是否有效!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-28
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多