如何在代码后面的 asp.net 中正确创建 Page 对象。

How to correctly create Page objects in asp.net behind code.

我对 C# 开发还是个新手,对创建对象有疑问。

我在一个网站上工作,我想在提交后在后台代码中提取表单值。最终我试图将页面转换为用户控件。

现在我正在尝试创建一个 Page 对象的实例 (System.Web.UI.Page),这样我就可以访问该对象的请求 属性 并读取提交值。

我的问题是,它总是抛出 NullReferenceException 并且不读取提交的值

这是我的代码:

<form id="myForm" runat="server" > 
Name: <input type="text" name="name" id="name" /> 
<input type="submit" value="Submit Name" /> 
</form>


public partial class testing1 : BasePage
{
// Created an instance of Page Object
public System.Web.UI.Page requestVar;

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        // Try and use request, throws null exception
        string holder = requestVar.Request["name"];
    }
    catch (NullReferenceException)
    { }
}

}

知道为什么我得到空异常吗?创建 Page 对象以便我可以使用它的 Request 属性 的正确方法是什么?

请告诉我, 谢谢!

在表单标签中使用 method="POST"

<form id="myForm" runat="server" method="POST" > 
    Name: <input type="text" name="name" id="name" /> 
          <input type="submit" value="Submit Name" /> 
</form>

并在代码中使用 Request.Form["name"]

try
{
    string holder = Request.Form["name"];
}
catch (Exception ex)
{ }

我很惊讶你的代码编译成功了。通常编译器可以检测未初始化的变量。我猜你的例子遗漏了一些东西。

无论如何,要解决您的具体问题,请更改

public System.Web.UI.Page requestVar;

public System.Web.UI.Page requestVar = new Page();

也就是说,您不需要 Page 对象。如果您需要访问该请求,您可以使用

获取对它的引用
var request = HttpContext.Current.Request;
var someVariable = request["ParamName"];