Avatar billede madeindk Nybegynder
26. juli 2010 - 20:55 Der er 15 kommentarer og
1 løsning

Referere fra UserControl

Hej Eksperter

Jeg har et problem med noget C#. Jeg har oprettet en UserControl dynamisk, og vil nu gerne arve en string fra siden der henter usercontrolen ind, det fungerer også fint når jeg gør det sådan her.

string Apple = ((TemplateDefault)this.Page).Apple;

Og mine filer ligger sådan her:

/Default.aspx
/Default.aspx.cs
/UserControl.ascx
/UserControl.ascx.cs

Men ligeså snart jeg flytter mine filer der styrer min UserControl ind i en mappe ved navn 'Test' siger den følgende: The type or namespace name 'TemplateDefault' could not be found (are you missing a using directive or an assembly reference?)

Hvordan i alverden løser jeg dette?

/madeindk
Avatar billede heinzdmx Nybegynder
26. juli 2010 - 22:10 #1
Der er 2 mulige løsninger, det kan være det er en kombi.


1. Hvis du har flere projekter åbne i samme solution, så skal du tilføje en reference under dit hovedprojekt til underprojektet

2. Tilføj en using til toppen af dit dokument:

f.eks. "using TemplateDefault"

tjek det namespace som din usercontrol har

Når det er gjort burde det virke
Avatar billede madeindk Nybegynder
26. juli 2010 - 22:26 #2
Hej heinzdmx

Jeg kører ikke med projekt, men bare med website. Så jeg har kun websitet åbent - det kører lokalt, via et netværkdrev.

Og jeg har begge mine mine filer ligger under samme namespace, mit namespace hedder: CMS
Avatar billede heinzdmx Nybegynder
26. juli 2010 - 22:59 #3
Bruger du Visual studio?

eller hvordan gør du?
Avatar billede madeindk Nybegynder
26. juli 2010 - 23:11 #4
Ja, det gør jeg. Jeg kører en server lokalt på mit netværk, som jeg har oprettet forbindelse til via et netværksdrev. Det fungerer perfekt, så jeg tvivler stærkt på at det er det :-)
Avatar billede heinzdmx Nybegynder
26. juli 2010 - 23:18 #5
Det gør jeg skam også :)


Altså fejlen betyder jo, at den ikke kan finde typen eller namespacet 'TemplateDefault'

Prøv at finde det, og så på den linje for det går galt skriv den fulde sti til 'TemplateDefault'...

det være CMS.TemplateDefault eller hvad det nu er.
Avatar billede madeindk Nybegynder
26. juli 2010 - 23:19 #6
Den siger næsten det samme:
The type or namespace name 'TemplateDefault' does not exist in the namespace 'CMS' (are you missing an assembly reference?)

Og min kode ser således ud:

using CMS;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CMS
{
    public partial class FrontendControlFormular : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string Apple = ((CMS.TemplateDefault)this.Page).Lars;
        }
    }
}
Avatar billede madeindk Nybegynder
26. juli 2010 - 23:26 #7
Og min /Default.aspx.cs fil ser således ud:

using CMS;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
using System.Data;

namespace CMS
{
    public partial class TemplateDefault : System.Web.UI.Page
    {
        public string Lars;

        public void Page_Load(object sender, EventArgs e)
        {
            Lars = "test";

            UserControl Formular = (UserControl)LoadControl("/Test/Formular.ascx");
            ItemsTemplatePlaceholder.Controls.Add(Formular);
        }
    }
}
Avatar billede heinzdmx Nybegynder
26. juli 2010 - 23:37 #8
Prøv i din load:

CMS.TemplateDefault tmpDef = new CMS.TemplateDefault();

string Apple = ((tmpDef)this.Page).Lars;
Avatar billede madeindk Nybegynder
26. juli 2010 - 23:48 #9
Den siger præcis det samme :(
Avatar billede madeindk Nybegynder
26. juli 2010 - 23:52 #10
Har du selv prøvet at sætte samme scenarie op i dit VS?

Lige til din information så benytter jeg Visual Studio 2008 (Express)
Avatar billede heinzdmx Nybegynder
26. juli 2010 - 23:53 #11
har du tjekket under dit projekt at den fil er loadet?

At det er registret at den er flyttet??

Det lyder jo ikke til at være din kode, sæt den tilbage til det du havde før, og prøv så at tjekke om alle filerne kan ses under Solution explorer under dit projekt
Avatar billede madeindk Nybegynder
27. juli 2010 - 00:06 #12
Hvad tænker du på? Filerne er lokaliseret som jeg har angivet det i koden.

Det er jo ikke der den fejlerne, den kan sagtens finde min UserControl.
Avatar billede heinzdmx Nybegynder
27. juli 2010 - 00:35 #13
Til at starte med har du:

/Default.aspx
/Default.aspx.cs
/UserControl.ascx
/UserControl.ascx.cs

Når du så flytter det til:
/Default.aspx
/Default.aspx.cs
/test/UserControl.ascx
/test/UserControl.ascx.cs

Er det ikke det der sker, og så virker user control ikke, eller har jeg misforstået?
Avatar billede madeindk Nybegynder
27. juli 2010 - 08:14 #14
Godmorgen :-)

Jo, lige præcis - det er sådan min struktur ser ud når det ikke virker. Det virker kun når min UserControl ligger i samme mappe som min Default-fil.
Avatar billede heinzdmx Nybegynder
27. juli 2010 - 09:36 #15
Det er derfor jeg foreslår dig, efter du har flyttet det højreklikke på dit projekt og vælg, tilføj eksisterende fil, og så vælge din 2 filer og tilføje dem...

Visuel studio holder ikke øje med at man manuelt flytter filer
Avatar billede madeindk Nybegynder
02. august 2010 - 08:57 #16
Jeg løste selv problemet ved at oprette et projekt, i stedet for website.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester