Codebehind

z-d-m

Grünschnabel
Hallo zusammen,

auch wenn mich alle für einen DAU halten komme ich nicht umhin meine Frage zu posten. Ich fand einfach nirgends eine passende (lauffähige) Lösung.

Ich will von einer C# Datei bestimmte Felder aus meiner aspx Datei abfragen. Solange ich alles inline erledige klappt es auch wunderbar, ist aber leider im Endeffekt unschön.

OK, hier die aspx Datei (WebForm2.aspx):

<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="WebApplication2.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<form runat="server" ID="Form1">
<ASP:TextBox id="value" runat="server"/>
<ASP:Button runat="server" Text="OK" OnClick="Button_Click" ID="Button1" NAME="Button1"/>
</form>


Nun die dahinterliegende aspx.cs datei (WebForm2.aspx.cs):

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;

namespace WebApplication2
{
/// <summary>
/// Zusammenfassung für WebForm2.
/// </summary>
public class WebForm2 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// Hier Benutzercode zur Seiteninitialisierung einfügen
}
protected void Button_Click(object sender, System.EventArgs e)
{
StreamWriter writer = new StreamWriter("c:\\text.txt");
writer.WriteLine(value.text);
writer.Flush();
writer.Close();
Response.Write("c:\\text.txt wurde erzeugt ...");
}
.....
}
}

Der Compiler meckert über das "value" bei "value.text" folgendermassen:
"Der Typ oder Namespace 'value' konnte nicht gefunden werden. Möglicherweise fehlt eine Anweisung oder ein Assemblyverweis".

Danke für eure Hilfe,
z-d-m
 

Alexander Schuc

crazy-weasel
Hallo.

Du musst wenn du ein Control aus der aspx-Datei verwenden willst es irgendwie in der CodeBehind Datei deklarieren damit der Compiler weiss womit er es zu tun hat.

Code:
namespace WebApplication2
{
/// <summary>
/// Zusammenfassung für WebForm2.
/// </summary>
public class WebForm2 : System.Web.UI.Page
{

protected System.Web.UI.WebControls.TextBox value;

private void Page_Load(object sender, System.EventArgs e)
{
// Hier Benutzercode zur Seiteninitialisierung einfügen
}
protected void Button_Click(object sender, System.EventArgs e)
{
StreamWriter writer = new StreamWriter("c:\\text.txt");
writer.WriteLine(value.text);
writer.Flush();
writer.Close();
Response.Write("c:\\text.txt wurde erzeugt ...");
}
.....
}
}

Die Rot hervorgehobene Zeile sollte es zum Laufen bringen. Ich hoffe die Zeile stimmt, habe länger keine Zeit mehr für ASP.net gehabt.
Ich habe explizit auf die TextBox Klasse in System.Web.UI.WebControls verwiesen da du System.Web.UI.WebControls als auch System.Web.UI.HtmlControls via using 'eingebunden' hast.

Ich hoffe es funktioniert.
Nur eine bitte noch, wenn du das nächste Mal Code pastest umklammere ihn mit dem Code-Tag [ code ] blab bla [/ code] (Ohne Leerzeichen).
Dann bleibt die Formatierung erhalten, und es ist besser zu lesen.

Mfg,
Alex
 

Texaner

Erfahrenes Mitglied
Moin,

ich weiß nicht ob es relevant ist, aber ich würde eine Texbox
auch nicht unbedingt "value" nennen.