Jak "dorwać" kontrolkę z Plik.aspx z poziomu w App_Code\BaseCode.cs?

0

Witam,
Prosty przykład stronki Default.aspx

    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

i zdarzenie w Default.aspx.cs korzystające z "funkcji" w App_Code/BaseCode.cs

public partial class _Default : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        BaseCode.Zmiana( ????"Default.aspx" );  // wywołanie metody z App_Code
    }
}

a tu App_Code/BaseCode.cs

public class BaseCode
{
    public void Zmiana( ??? "Default.aspx" )
    {
        ???.Label1.Text="Nowy tekst";
    }
}

Jak zmienić coś w kontrolce na formularzu w Dafault.aspx z poziomu App_Code/BaseCode.cs ?
Co wpisać żeby to ruszyło?
Dziękuję za wszelką pomoc
P.S.
Mam nadzieję, że za swoje pytania nie zostanę zbanowany...

0

Przekaż tą kontrolkę do metody, w której chcesz ją zmienić.

Nie myślałeś, żeby zacząć od pisania programów w konsoli, żeby się nauczyć podstaw?
ASP.NET WebForms to nie jest dobra droga na początek, zwłaszcza, że są nieźle zakręcone.

0

BaseCode.Zmiana(Label Label1);
pokazuje błąd:

) expected

Chyba do Default.aspx trzeba dodać właściwości, ale jak mam 20 buttonów...rety.

i oczywiście proszę o linki dot.podstaw w konsoli. Wiem, wiem, że są i to dużo, ale właśnie dlatego proszę o kilka dobrych linków.

0
mimirus napisał(a):

BaseCode.Zmiana(Label Label1);
pokazuje błąd:

) expected

Widocznie zapomniałeś gdzieś nawiasu wstawić. :|


> Chyba do Default.aspx trzeba dodać właściwości, ale jak mam 20 buttonów...rety.

Albo zrobić to normalnie. Czemu chcesz, żeby jakaś inna klasa modyfikowała kontrolki?


> i oczywiście proszę o linki dot.podstaw w konsoli. Wiem, wiem, że są i to dużo, ale właśnie dlatego proszę o kilka dobrych linków.

Np.: http://si-szarp.pl/
0

:-( Kompletny kod:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="Pages.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    </form>
</body>
</html>

i Default.aspx.cs

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

public partial class _Default : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        BaseCode.Zmiana(Label Label1);
    }
}

a tu App_Code/BaseCode.cs

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

public class BaseCode
{
    public void Zmiana( Label Label1 )
    {
        Label1.Text="Nowy tekst";
    }
}

Generalnie chodzi o wykorzystanie metody Zmiana w kilku do kilkunastu formularzach, na których są kontrolki o tych samych ID.
P.S.
Gdzie tu są emotikony?

1

Nie powinieneś tak robić.
To klasa _Default powinna mieć właściwość, np.:

public string TekstNaLabeluJakimśtam
{
    get { return this.jakiśLabel.Text; }
    set { this.jakiśLabel.Text = value; }
}
 

Wtedy w swojej klasie masz tak:

public class BaseCode
{
    public void Zmiana(_Default strona)
    {
        strona.TekstNaLabeluJakimśtam = "Nowy tekst";
    }
}

To też nie jest super rozwiązanie, ale na początek będzie ok.

mimirus napisał(a):

Generalnie chodzi o wykorzystanie metody Zmiana w kilku do kilkunastu formularzach, na których są kontrolki o tych samych ID.

To, jakie jest ID kontrolki, nie ma prawa obchodzić żadnej klasy poza stroną, na której kontrolka się znajduje.
Jeśli te same wartości chcesz ustawiać na wielu stronach, to pomyśl o zdefiniowaniu interfejsu, który zaimplementujesz we wszystkich tych stronach, a metody klasy BaseCode niech przyjmują w argumencie ten interfejs.

Gdzie tu są emotikony?

Na klawiaturze, wystarczy wpisać odpowiednią kombinacje znaków, i się pojawiają graficzne buźki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1