3 Stimmen

Wie kann ich den Wert eines Textfeldes in einem Benutzersteuerelement abrufen?

Ich habe eine Benutzerkontrolle, die ein Textfeld auf es hat, jetzt diese Benutzerkontrolle ist auf eine andere Benutzerkontrolle, die ich auf Aspx-Seite verwenden, wie kann ich Wert der Textbox auf der ersten Benutzerkontrolle erhalten.

9voto

Jon Limjap Punkte 92084

Schreiben Sie eine Eigenschaft in Ihr Benutzerkontrollfeld, um dessen Inhalt offenzulegen, z. B.,

public string TextBoxValue
{
    get { return txtControl1.Text; }
}

Auf diese Weise können Sie den Wert des Textfelds abrufen, ohne das gesamte Textfeld-Steuerelement als öffentliches Objekt offenzulegen.

2voto

Cerebrus Punkte 25410

Jon Limjap's Antwort bietet die beste Lösung für diese Art von Problem - Expose-Steuerelementwerte mit öffentlichen Eigenschaften.

Wenn Sie dies jedoch nicht auf diese Weise tun möchten (oder wenn Sie dies für viele Steuerelemente tun müssen und die Erstellung von Public-Eigenschaften für jedes Steuerelement vermeiden möchten), können Sie Reflection verwenden, um das Steuerelement in den ChildControls des gewünschten UserControls zu "finden":

TextBox txt = UserControl1.FindControl("myTextBox") as TextBox;

if (txt != null)
{
  string val = txt.Text;
}

1voto

shamim Punkte 6360

An der Spitze der .aspx Seite, fügen Sie die folgende Zeile über dem Tag ein.

<%@ Register TagPrefix="Test" TagName="TestControl" Src="Test.ascx" %>

Diese Richtlinie registriert das Steuerelement, damit es bei der Verarbeitung der Seite erkannt werden kann. TagPrefix bestimmt den eindeutigen Namensraum des Steuerelements, TagName ist der Name des Steuerelements und Src ist der Pfad des Steuerelements. Deklarieren Sie Benutzersteuerelemente wie

<Test:TestControl id="TestControl" runat="Server"/>

Zugriff und Einstellung der Werte von Benutzersteuerelementen auf der .aspx-Seite: Der Benutzer kann auf die Werte des Benutzersteuerelements von der .aspx-Seite über Eigenschaften zugreifen und diese einstellen, indem er Javascript und den Code der aspx-Seite verwendet. Verwendung von Eigenschaften Wenn die test.ascx Kontrolle hat zwei Textfelder und Submit-Button. Sie können die Werte der Textfelder in der Kontrolle von einer .aspx Seite durch die Deklaration von öffentlichen Eigenschaft in der .ascx Seite zugreifen.

public string FirstName
{
get{return txtFirstName.Text;}
set{txtFirstName.Text = value;}
}

In der .aspx-Seite können Sie auf FirstName zugreifen, indem Sie

TestControl.FirstName
You can set the FirstName of the control from aspx page using
TestControl.FirstName = "Suzzanne"

Anmerkung: ref

0voto

Adam Punkte 1511

Ich denke, es ist einfacher, den Wert des Antrags zu ermitteln. Sie könnten eine generische Methode wie diese schreiben, um ihn zu finden:

    string get_value(string control_name)
    {
        var key = Request.Form.AllKeys.First(x => x.ends_with(control_name));
        return Request.Form[key];
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X