Как правильно создавать объекты Page в asp.net за кодом.

Я все еще новичок в разработке на C# и у меня есть вопрос о создании объектов.

Я работаю над веб-сайтом и хочу отправить значения формы в коде после отправки. В конечном итоге я пытаюсь преобразовать страницу в пользовательский элемент управления.

Теперь я пытаюсь создать экземпляр объекта Page (System.Web.UI.Page), чтобы получить доступ к свойству Request объекта и прочитать значения отправки.

Моя проблема заключается в том, что он всегда генерирует исключение 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?

Пожалуйста, дайте мне знать, спасибо!

2 ответа

Решение

Использование 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"];
Другие вопросы по тегам