Zum Inhalt springen

C# Programm auf Webseite


Tician

Empfohlene Beiträge

Hallöööchen mit 3 öchen,

ich habe mich gefragt ob es möglich ist ein C# Programm direkt auf einer Webseite laufen zu lassen (ohne Download).

Dabei bin ich erst auf die Funktion zur Veröffentlichung aufmerksam gemacht worden - aber nach ein wenig Recherche klingt es nicht nach dem was ich suche.

Das nächste was ich gefunden habe ist ASP.NET, da hätte ich gerne rein geschnuppert, aber ich habe 'nur' VS 2015 Express und finde dort keine Möglichkeit bei der Projekt-Erstellung ASP.NET auszuwählen. Ich bin da also gerade etwas verloren weil ich nicht weiß wonach ich überhaupt genau suche und was ich dafür brauche.

Funktioniert das überhaupt? Habt ihr irgendein gutes Schritt für Schritt Tutorial?

Grüße

Tician

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 40 Minuten schrieb Tician:

VS 2015 Express

Das gibt's noch? Ich dachte "Express" wäre mit 2013 eingestellt worden und das heißt jetzt "Community". Mit der Community-Edition von VS2015 kannst du aber definitiv auch ASP.NET machen - möglicherweise musst du nur die Vorlagen nachinstallieren. Wenn du das Setup nochmal ausführst, müsstest du auswählen können, welche Bestandteile installiert werden - da sollte auch ASP.NET dabei sein.

edit: Huh, gerade nochmal nachgeguckt und offenbar gibt's die Express-Versionen tatsächlich noch parallel zur Community-Version.

Bei der Community-Version musst du ggf. aufpassen, ob du die im kommerziellen Bereich einsetzen darfst.

Express for Web gibt's bspw. hier: MSDN Download. Die Express-Versionen gibt's einmal für Desktop und einmal für Web und können dann auch nur die entsprechenden Projekte.

Bearbeitet von arlegermi
Link zu diesem Kommentar
Auf anderen Seiten teilen

2015 war die letzte Express-Version. Es gab da mehrere Express-Editionen für unterschiedliche Aufgaben (Desktop, Web, UWP, Quellcodeverwaltung). Die Express-Version wurde aber nun komplett eingestellt, weil sie aufgrund der Community-Version überflüssig wurde.

Du entwickelst aber mit ASP.NET keine Client-Anwendung, sondern eine Client-Server-Anwendung. Der Code wird also auf dem Server ausgeführt und der Client stellt das Ergebnis nur grafisch dar. Mit dem neueren ASP.NET MVC benutzt stark das MVC-Pattern (Model-View-Controller) und zwingt den Entwickler auch dazu, dies einzuhalten. Da brauchst also schon ein bisschen technisches Verständnis, wie dieses Pattern funktioniert. Du hast dort auch kein GUI-Designer wie in WinForms- oder WPF-Anwendungen. 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Monate später...

Ich... bräuchte Hilfe :unsure:

Ich wollte mich mal durch ein Tutorial hangeln, aber (wie immer bei mir) führen slebst Schritt für Schritt-Anleitungen zu Fehlern.

https://docs.microsoft.com/de-de/aspnet/core/tutorials/first-mvc-app/adding-controller

Ich habe meinen ersten Controller hinzugefügt, den Code kopiert und jetzt sieht es so aus:

namespace NetCoreTest1.Controllers
{
    public class HelloWorldController1 : Controller
    {
        // 
        // GET: /HelloWorld/

        public string Index()
        {
            return "This is my default action...";
        }

        // 
        // GET: /HelloWorld/Welcome/ 

        public string Welcome()
        {
            return "This is the Welcome action method...";
        }
    }
}

Sonst keine Veränderungen gemacht. Laut Anleitung sollte ich also ohne Debugging starten, dann kommt die Standard-Webseite, aber wenn ich "/HelloWorld" anhänge kriege ich nur eine leere Seite. Ich verstehe es vorne und hinten nicht... woher soll mein Programm auch wissen das ich genau diesen Index mit "HelloWorld" aufrufen möchte, ich habe 'HelloWorld' ja nie irgendwo definiert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Tician:

woher soll mein Programm auch wissen das ich genau diesen Index mit "HelloWorld" aufrufen möchte

ASP.NET ist start konventionsorientiert. Das heißt, dass standardmäßig jeder Controller über seinen Namen erreichbar ist (ohne das "Controller"). In deinem Fall klappt das nicht, weil dein Controller nicht mit "Controller" endet, sondern mit "Controller1" - und das widerspricht der Konvention. Man kann das ganze auch selber steuern, aber das ist für den Anfang vielleicht zuviel.

Sprich: Klasse heißt "HelloWorldController", daraus folgt die URL localhost/HelloWorld

Und wenn du eine Methode Index() hast, dann wird diese als Standardantwort für deinen Controller genutzt. Das ganze macht einen schnellen Start sehr einfach, bietet aber auch (über die Routing-Konfiguration) genug Flexibilität für komplexere Szenarien.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@arlegermi Vielen Dank für deine Antwort, habe ich soweit verstanden :)

 

Viel blabla, bevor sich das jemand antut: Es funktioniert gerade.

Auf Anraten starte ich jetzt doch erstmal mit "normalem" ASP.NET  über Webforms durch und finde das um einiges leichter. Jetzt habe ich eine Situation bei der ich vermutlich einfach falsch google aber gerade nicht weiß wonach ich suchen soll um ein für mich relevantes Ergebnis zu bekommen.

Ich habe auf meiner Webseite eine Tabelle (dataGridView), die durch DataBind() quasi eine MySQL-Tabelle ausgibt. Dieser Tabelle habe ich eine Spalte hinzugefügt mit klickbaren labels (linkslabels oder wie die heißen). Soweit werden sie auch angezeigt, aber geben noch einen Error zurück "dataGridView1 löste das Ereignis RowEditing aus, das nicht behandelt wurde". Es gibt also schon ein Ereignis das ich mir beim erstellen der Spalte zusammen geklickt habe - vermutlich aber das falsche, da Row Editing nicht das war was ich wollte.

Mein Gedanke war nun, dass wenn man auf einen dieser links klickt der Inhalt der Spalte "name" in der Zeile in der der Link geklickt wurde ausgelesen wird, man auf eine weitere Seite geleitet wird und ich diese Variable - also den Namen - auf der nächstes Seite weiter benutzen kann.

Ich bräuchte in etwa ein Event das linkLabel.Click() heißt oder so, das dann für alle dieser labels gilt und es mir ermöglicht zu wissen in welcher Zeile es geklickt wurde. Hier wäre ich für jegliche Hilfe dankbar.

*.aspx
  
  <form id="form1" runat="server">
        <div>
            <asp:GridView ID="dataGridView1" runat="server">
                <Columns>
                    <asp:ButtonField CommandName="Edit" HeaderText="Editieren" ShowHeader="True" Text="Edit" />
                </Columns>
            </asp:GridView>
            <br />
            Name: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </div>
        <p>
            <asp:Button ID="MaAdd" runat="server" OnClick="MaAdd_Click" Text="Add Mitarbeiter" />
        </p>
    </form>
  
  
*.aspx.cs
  
protected void Page_Load(object sender, EventArgs e)
        {
            db = new Datenbank();
            db.Connect();
            MySqlDataAdapter da = db.Query("select * from mitarbeiter;");
            DataTable dt = new DataTable();
            da.Fill(dt);

            dataGridView1.DataSource = dt;
            dataGridView1.DataBind();

            db.Disconnect();
        }

db ist das Objekt einer Klasse die ich mir erstellt habe um den ganzen Datenbank-Kram abzuarbeiten.

 

Tante Edith: Jetzt habe ich mal ein Event geschrieben:

void DataGridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow selectedRow = dataGridView1.Rows[index];
                TableCell tableName = selectedRow.Cells[2];
                string name = tableName.Text;

                //Response.BufferOutput = true;
                Response.Redirect("~/Default.aspx", true);
            }
        }

Allerdings kam ich da nie hin, nach langem Suchen hab ich dann die Hand vor die Stirn geklatscht und das Event auch als RowCommand in die aspx-Datei gehängt:

<asp:GridView ID="dataGridView1" runat="server" OnRowCommand="DataGridView1_RowCommand">
                <Columns>
                    <asp:ButtonField CommandName="Select" HeaderText="Editieren" ShowHeader="True" Text="Edit" ItemStyle-HorizontalAlign="Right"/>
                </Columns>
            </asp:GridView>

Hat leider nicht so funktioniert wie ich es mir erhofft hatte, meine Seite wird durch diesen kleinen Zusatz "OnRowCommand" gar nicht mehr angezeigt und liefert nur noch einen Fehler zurück:

'mitarbeiter_aspx' does not contain a definition for 'DataGridView1_RowCommand' and no extension method 'DataGridView1_RowCommand' accepting a first argument of type 'mitarbeiter_aspx' could be found (are you missing a using directive or an assembly reference?)

Ich kenne die Fehlermeldung sonst nur wenn mit tatsächlich ein using directive fehlt, in diesem Fall... keine Ahnung in der cs-Datei ist sie ja da (System.Web.UI.WebControls)

 

Edit 2: Funktioniert

Bearbeitet von Tician
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...