enter code here
Я пытаюсь присвоить значение меток на главной странице с помощью vb.net (а не моего первого языка-lol). Я следовал за информацию из этих двух ссылок о том, как получить доступ к контенту из Masterpage: 1. [https://msdn.microsoft.com/en-us/library/c8y19k6h(v=vs.90).aspx][1] 2. [nullreferenceexception was unhandled by user code in Master PageУправление меткой доступа от masterpage throws nullreferenceexception
Я получаю Null Reference Exception на НО ТОЛЬКО при попытке вызвать метод, который я создал для него из другого класса. Он отлично работает, когда я называю это из того же класса метод находится в я написал метод от начальной страницы/класса, WebForm1:.
Public Sub PageIdentity(ByVal pageId As String)
' Gets a reference to a Label control inside a ContentPlaceHolder
Dim mpContentPlaceHolder As ContentPlaceHolder
'Dim mpTextBox As TextBox
Dim mpLabel As Label
mpContentPlaceHolder = CType(Master.FindControl("MainContent"), ContentPlaceHolder)*'Null Reference Exception here*
If Not mpContentPlaceHolder Is Nothing Then
mpLabel = CType(mpContentPlaceHolder.FindControl("lblPageIdentifier"), Label)
If Not mpLabel Is Nothing Then
mpLabel.Text = pageId
End If
End If
End Sub
, когда я называю эту функцию из другого класса в загрузке страницы, как этого броски null ref ex:
Dim oWebForm1 As WebForm1 = New WebForm1()
oWebForm1.PageIdentity("SomeText")
Должно быть, что-то не так, создавая экземпляр? Сначала я попытался написать его как публичную общую функцию, но это создало другие проблемы. Может ли кто-нибудь помочь?
UPDATE: @Joey я заменил комментируемой строку кода ниже, как вы предложили и поставить сабвуфер в коде страницы мастера позади, Site1.Master.vb:
'mpContentPlaceHolder = CType(Master.FindControl("MainContent"), ContentPlaceHolder)
mpContentPlaceHolder = CType(Me.FindControl("MainContent"), ContentPlaceHolder)
Я также заверил, что страница директивы на другие страницы включены:
<%@ MasterType VirtualPath = "~/Site1.Master" %>
на тестовой странице, я назвал суб так:
Dim _SiteMaster As MasterPage = TryCast(Me.Master, MasterPage)
_SiteMaster.PageIdentity("SomeText")
Я получаю синюю ошибку волнистой линии, сообщение: "PageIdentity is not a member of System.Web.UI.MasterPage"
Мастер страница наследует так:
Public Partial Class Site1
Inherits System.Web.UI.MasterPage
страница вызова подменит наследованные как этот
Public Class WebForm1
Inherits System.Web.UI.Page
Я немного смущен тем, что вы просите. Подраздел 'PageIdentity' находится в веб-форме, называемой' WebForm1', и вы пытаетесь получить доступ к этому югу из другой веб-формы или класса? Если это так, я бы порекомендовал вам поместить код 'PageIdentity' в главную страницу, которая уже должна быть доступна вашей веб-формой, а затем создать экземпляр на главной странице в любой веб-форме, в которой вы нуждаетесь:' Dim _siteMaster As MasterPage = TryCast (Me.Master, MasterPage) ', а затем' _siteMaster.PageIdentity («SomeText») '. Вам также пришлось бы изменить «Мастер» на «Я» в подпункте. –
Дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –
@JoeyJoeJoeJrShabadoo Я ОБНОВЛЯЮ в своем первоначальном вопросе с результатами попыток вашего предложения. Теперь я получаю ошибку наследования, не знаю, как исправить, поскольку моя страница наследует правильно, насколько я могу судить ..... – Doreen