Avatar billede thomasabcd Nybegynder
08. oktober 2006 - 18:36 Der er 4 kommentarer og
1 løsning

Gemme værdier i Profilecommon

Jeg benytter asp.nets profilecommon-object til at gemme information om brugerne. Jeg har en profilegroup kaldet "Location". I denne grupe er der blandt andet en property om hvilken by, brugeren bor i. Jeg vil dog gerne gøre sådan, at hvis brugeren skriver "København C", bliver det til "København". Det er såmænd ikke det med at gøre København C til København, der er problemet, men mere at komme ind og "blande sig", der hvor værdien sættes. I web.configen kan man sætte hvilken type, propertien skal være. Lige nu er det en string, men kan jeg lave min egen string-type eller anden type, hvor jeg så kan lave en "get/set"? Andre forslag modtages også gerne.
Avatar billede snepnet Nybegynder
08. oktober 2006 - 20:17 #1
Du kan gemme din egen type hvis den kan serialiseres.
F.eks.:
<group name="Location">
  <add name="City" type="MyTypes.City"/>
</group>
Alternativt kan du wrappe tilgangen til profilen via din egen klasse - f.eks.:

public static class ProfileProperties
{
  public string By
  {
    get
    {
      Return Profile.Location.By;
    }
    set
    {
      // her kan du så kigge på value, og lave den manipulering du vil
      Profile.Location.By = value;
    }
  }
}
Mvh
Avatar billede thomasabcd Nybegynder
08. oktober 2006 - 21:16 #2
Jeg har allerede brugt:<group name="Location">
  <add name="City" type="string"/>
</group>
og derfor profile.location.by=..... mange steder i min kode. Så hvis det kan undgåes vil jeg helst ikke til at lave en wrapper. Hvordan laver jeg min egen type, så jeg stadig kan bruge profile.location.by="en eller anden by"?
Avatar billede snepnet Nybegynder
08. oktober 2006 - 23:43 #3
Du kan gøre sådan her:

public class ByProperty
{
    private string m_By;

    public string By
    {
        get { return m_By; }
        set { m_By = value; }
    }

    public ByProperty()
    {
    }

    public ByProperty(string by)
    {
        m_By = by;
    }

    public static implicit operator ByProperty(string by)
    {
        return new ByProperty(by);
    }

    public static implicit operator string(ByProperty by)
    {
        if(by != null)
            return by.By;
        return new ByProperty(String.Empty);
    }
}

Altså lave implicitte operatorer String->ByProperty og ByProperty->String

Og så i din config under location:
<add name="By" type="ByProperty"/>

Mvh
Avatar billede thomasabcd Nybegynder
09. oktober 2006 - 10:39 #4
Genialt,

smid et svar!
Avatar billede snepnet Nybegynder
09. oktober 2006 - 17:11 #5
Kommer her :o)
Mvh
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