Ссылка на объект не указывает на экземпляр объекта в пользовательском управлении из другого проекта

У меня есть решение с двумя проектами. Один проект (TestControl) содержит файл aspx. затем другой (Controls) для пользовательских элементов управления. Я уже предоставил aspx возможность отображать пользовательские элементы управления, ссылаясь на Controls в проекте и копируя файлы в проект TestControl. Но Sub, похоже, не работает и отправляет ошибку «Ссылка на объект не установлена ​​​​на экземпляр объекта» даже при простом коде response.redirect. Я попробовал msgbox, и он работает, а также поместил код в page_load. Но внутри саба это не работает. Есть идеи, почему? и исправление?

Простой код в файле uc3.ascx

   Public Sub Redirect()

        Response.Redirect("http://www.google.com")
    End Sub

Вот исключение ошибки

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=System.Web
  StackTrace:
       at System.Web.UI.UserControl.get_Response()
       at Controls.uc3.Redirect() in C:\Users\Nelbin\Documents\Visual Studio 2010\Projects\TestApp\Controls\uc3.ascx.vb:line 9
       at Controls.uc1.btnUserControl3_Click(Object sender, EventArgs e) in C:\Users\Nelbin\Documents\Visual Studio 2010\Projects\TestApp\Controls\uc1.ascx.vb:line 16
       at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 

person Halimbawa Dokumento    schedule 14.10.2013    source источник
comment
Вставьте код, чтобы помочь, пожалуйста;)   -  person Carlos Landeras    schedule 14.10.2013
comment
вставил простой response.redirect. и нулевая ссылка ex тоже :)   -  person Halimbawa Dokumento    schedule 14.10.2013
comment
@JohnSaunders, кстати, я проверил ваш вопрос / ответ, кажется, мне нечего с ними сравнить. Я не уверен, почему он возвращает ноль, потому что в точке останова у него есть данные.   -  person Halimbawa Dokumento    schedule 14.10.2013


Ответы (1)


По причине, которую я не вижу в вашем коде, элемент управления не имеет доступа к объекту Response. Пытаться

System.Web.HttpContext.Current.Response

вместо просто Response.

Public Sub Redirect()
    System.Web.HttpContext.Current.Response.Redirect("http://www.google.com")
End Sub

В веб-проекте System.Web.HttpContext.Current никогда не должно быть ничего.

person IvanH    schedule 14.10.2013
comment
Спасибо, это сработало! Теперь моя проблема все та же, связанная с передачей значения из пользовательского элемента управления в другой. - person Halimbawa Dokumento; 14.10.2013
comment
@HalimbawaDokumento: обратите внимание, что это определенно обсуждается в моих вопросах и ответах: Response было пустым. Следующий шаг — выяснить, почему, но первый шаг — выяснить, что было нулевым. - person John Saunders; 14.10.2013
comment
@JohnSaunders Я видел это в вашей ветке, но не могу придумать способ предотвратить это. Извините, я нуб, ха-ха. Теперь моя следующая проблема связана с передачей значения пользовательского элемента управления другому. Я считаю, что контроль не инициирован без причины ›.‹ - person Halimbawa Dokumento; 14.10.2013
comment
@HalimbawaDokumento: вместо этого используйте System.Web.HttpContext.Current.Response - person John Saunders; 14.10.2013
comment
не могли бы вы привести пример? Я получаю значение через свойство или суб. Я не знаю, как я могу использовать эту часть :( - person Halimbawa Dokumento; 14.10.2013