Avatar billede tdafoobar Nybegynder
12. juli 2006 - 17:09 Der er 6 kommentarer og
1 løsning

kald I Page_Load/constructor i usercontrols ?

Hejsa

Jeg er ved at skrive nogle Localization controls, for jeg f.eks. har <localization:label id="lblName" /> i min asp.net kode. Den reffere så til følgende C# class, som så skulle sætte dens .Text param efter string værdien af en resource som har sammen navn som controlleren's ID.

Problemet er at den ikke vil loade teksten fra rm.getResource hverken i Page_Load eller Constructor, bliver disse 2 methoder slet ikke kaldt i en user control ? Og hvis ikke, hvordan gør jeg det så dynamisk , uden at skulle sætte det fra den overordnede codebehind (det dokument som mine controls er i) ?

Localization.Label.ascx
---
<%@ Control
    Language        = "C#"
    AutoEventWireup = "false"
    Codebehind      = "Localization.Label.ascx.cs"
    Inherits        = "Localization.Label"
%><%= Text %>
---

Localization.Label.ascx.cs
---
using System;
using System.Data;
using System.Collections;
using System.Resources;
using System.Reflection;
using System.Globalization;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Localization
{
  public class Label : System.Web.UI.UserControl
  {
    private string text = "label";
    private ResourceManager rm;
    private string language = CultureInfo.CurrentCulture.ToString();

    public void Page_Init(object sender, System.EventArgs e)
    {
      string file = "TalkMWA.App_Resources." + this.language;
            this.rm = new ResourceManager(file,Assembly.GetExecutingAssembly());
            this.text = rm.GetString(this.ID.ToString());
    }
   
    public string Text
    {
      get { return this.text; }
    }
   
  }
}
---
Avatar billede jtofte Nybegynder
12. juli 2006 - 17:24 #1
Så vidt jeg huske bliver de to metoder ikke kaldt, jeg mener du skal bruge oninit i stedet, et andet problem er at den danner ikke noget output, for at løse det mener jeg du skal bruge Render og så hedder det vist output.write(text).

Jeg sidder ikke ved en computer med noget udviklingsværktøj, så det er derfor der er nogen jeg mener.
Avatar billede tdafoobar Nybegynder
12. juli 2006 - 17:25 #2
dvs.:

public void On_Init(object sender, System.EventArgs e)

eller ?
Avatar billede tdafoobar Nybegynder
12. juli 2006 - 17:39 #3
public void OnInit() ;)

Men det hjælper desværre ikke, værdien forbliver "label" ,dvs. 'this.text = rm.GetString(this.ID.ToString());' bliver aldrig kaldt.
Avatar billede jtofte Nybegynder
12. juli 2006 - 17:39 #4
jeg mener bare den hedder OnInit(EventArgs e) og den skal override så det vil sige du skal kalde den "override protected void OnInit(EventArgs e)"
Avatar billede tdafoobar Nybegynder
12. juli 2006 - 17:43 #5
yay, så virkede det :D mange tak.
Avatar billede jtofte Nybegynder
12. juli 2006 - 18:14 #6
Det var så lidt
Avatar billede thrytter Nybegynder
12. juli 2006 - 21:52 #7
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