Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 4.673 pregleda

Najnovija ↓

Problem varijabla 23.11.2003. u 01:00 · pre 279 meseci #1
Imam jedan problem.
Imam jednu aspx stranicu, ascx user kontrolu i vb klasu.

U vb klasi imam varijablu definiranu ovako
Public strtitle as string
Uglavnom u kodu ta varijabla se mjenja prema linku na koji je
korisnik kliknuo.Sada tu varijablu stavljam u aspx stranicu
ovako.

<title><% =strporuka %></title>

Znači želim da mi u title piše ta poruka.

Dobijem sljedeću grešku : Name 'strtitle' is not declared
Čim maknem ono iz title taga sve ostalo radi.

Potpis
Hrvatski Divx Portal
Re: Problem varijabla 24.11.2003. u 04:30 · pre 279 meseci #2
Jedan od načina da se ovo uradi je da staviš literal kontrolu u title:

Code:
<title><asp:literal id="myPageTitle" runat="server"/></title>


Kontrolu takođe treba deklarisati u "code-behind" fajlu:

Code:
Public myPageTitle As System.Web.UI.WebControls.Literal


Onda naslov menjaš po potrebi sa

Code:
myPageTitle.Text = "Moje ime je..."

Re: Problem varijabla 24.11.2003. u 21:25 · pre 279 meseci #3
Hvala na odgovoru ali nije uspjelo.Javlja grešku:
Object reference not set to instance of object.

Stvarno ne kužim u čemu je problem.
Ako npr u title tag stavim
<%= Request("ime_parametra") %>
onda pročita vrijednost iz query stringa ali ako stavim bilo varijablu ili
literal kontrolu javlja grešku.



Potpis
Hrvatski Divx Portal
Re: Problem varijabla 25.11.2003. u 14:15 · pre 279 meseci #4
Ne znam u cemu bi mogao biti problem, možda nešto u vezi sa tom ascx user kontrolom? Kod mene u VS.NET 2003 sledeci trivijalni primer radi bez greške:

TitleTest.aspx
Code:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="TitleTest.aspx.vb" Inherits="TitleTest2.TitleTest"%>
<HTML>
    <HEAD>
        <title><%=myPageTitle%></title>
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:TextBox id="titleTextBox" runat="server"></asp:TextBox>
            <asp:Button id="setTitleButton" runat="server" Text="Set Title"></asp:Button>
        </form>
     </body>
</HTML>


TitleTest.aspx.vb
Code:
Public Class TitleTest
    Inherits System.Web.UI.Page

    Protected myPageTitle As String
    Protected WithEvents titleTextBox As System.Web.UI.WebControls.TextBox
    Protected WithEvents setTitleButton As System.Web.UI.WebControls.Button

    Private Sub setTitleButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles setTitleButton.Click
        myPageTitle = titleTextBox.Text
    End Sub

End Class

Re: Problem varijabla 25.11.2003. u 16:28 · pre 279 meseci #5
Citat:
ZokiR:
Code:
Public myPageTitle As System.Web.UI.WebControls.Literal


Nemam VS pa ne mogu da proveravam ali zar ovo ne bi trebalo da bude
Code:
Public myPageTitle As New System.Web.UI.WebControls.Literal
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: Problem varijabla 26.11.2003. u 18:12 · pre 279 meseci #6
Vjerojatno si u pravu da je problem sa user kontrolom.
Ovaj primjer koji si ti dao 100 % radi.

Ali problem kod mene je što user kontrola nasljeđuje iz code behinda a u aspx stranici
se registriraju pomoću register direktive.

Znači ovako nešto
.aspx
<%@ Register Tagname="acme" Tagprefix="aspx" src=kontrole/default.ascx" %>
...<title><% = strtitle %>

.ascx
<%@ Control Inherits="ime_Klase" src="default.ascx.vb" %>
.. tu se nalaze sve kontrole.

.ascx.vb
Public class ime_klase : Inherits UserControl
Public strtitle as String
... kod
End Class
Potpis
Hrvatski Divx Portal
Re: Problem varijabla 27.11.2003. u 11:37 · pre 279 meseci #7
Ok, sad shvatam šta se događa. strtitle je promenljiva u user kontroli, i zato se ne vidi na aspx stranici direktno. Treba da prefiksiraš ID user kontrole ispred imena varijable... znači, ako u aspx fajlu stoji

Code:
<acme:AcmeUserControl id="myUserControl" runat="server"></acme:AcmeUserControl>


onda se strtitle-u pristupa ovako:

Code:
<title><% = myUserControl.strtitle %></title>


Uzgred, moj prvi primer sa literal kontrolom nije radio jer mu je nedostajala ključna reč New u deklaraciji, kao što je Shadowed ispravno primetio. (tako je to kada pokušavam da prevedem kôd iz C# u VB napamet :) )
Re: Problem varijabla 27.11.2003. u 17:12 · pre 279 meseci #8
Ma krivo si shvatio.Promjenjiva varijabla strtitle
je definirana u vb klasi.

Rješio sam problem.Varijabla treba biti def. ovako
Public shared strtitle as string
i u title tag se upisati ovako
<% = ime_klase.strtitle %> gdje je ime_klase klasa
u kojoj je def. varijabla strtitle.

Hvala puno svima na pomoći.
Potpis
Hrvatski Divx Portal
Re: Problem varijabla 28.11.2003. u 02:39 · pre 279 meseci #9
Citat:
nristic:
Ma krivo si shvatio.Promjenjiva varijabla strtitle je definirana u vb klasi.

Jeste bila definisana u klasi, ali nije bila klasna promenljiva dok joj nisi dodao ono Shared :), a ako nije Shared onda se mora staviti ime instance kao prefiks (u ovom slučaju to je ID user kontrole). Da li je promenjiva Shared ili nije već zavisi od toga šta hoćeš da postigneš, ali ako ti ovo radi kako treba, nema problema.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme