Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Ich habe in meiner Datenbank eine Tabelle mit Gruppen, welche ich auf einer aspx Seite ausgeben möchte. Dies habe ich mit einer asp:Table versucht, wo ich aber feststellen musste, dass es in ASP-Elementen nicht möglich ist das Ergebnis meines Querys zeilenweise innerhalb der Seite zu durchlaufen und währenddessen neue Zeilen in die asp:Table Element zu schreiben. Ich habe mir dann etwas zu GridViews angeguckt und auch hier feststellen müssen, dass ich das irgendwie mit der DataSource nicht wirklich hinbekomme.

        <%

            oracle db = new oracle();

            System.Data.Common.DbDataReader group = null;


            db.prepare("SELECT * FROM zdvs_groups ORDER BY name ASC");

            db.execute();

            while(db.fetch(ref group)) {

        %>

        <!-- hier soll die Zeile ausgegeben werden -->

        <%

            }

            db.close();

        %>

Solchen Programmcode kann man laut einigen Quellen nicht innerhalb von Elementen ausführen, welche runat="server" als Parameter haben.

Jetzt habe ich versucht das ganze in einer normalen HTML Table darzustellen, bekomme jetzt aber den Fehler "Der Typ- oder Namespacename "global_asax" ist im Namespace "ASP" nicht vorhanden."

Bei einer .master Seite hat man die Möglichkeit in einer .cs Datei im Hintergrund zu steuern und Felder zu befüllen. Dies geht aber nicht bei normalen Seiten (zumindest finde ich sowas nicht).

Kann mir bitte jemand einen Tipp geben, wie ich die Befüllung aus der View rausnehmen kann und es endlich hinbekomme eine Darstellung der Gruppen zu schaffen?

Gruß

Shadowman

Uhhh...Die aspx-Datei sollte nur den Code für die Darstellung beinhalten. Jede aspx-Datei hat eine Code-Behind-Datei, in der man die Steuerelemente, die mit dem 'runat="server"' ausgestattet sind, über die ID ansprechen kann.

Der Aufruf der Daten und das Zuweisen der Daten sollte also im Hintergrund passieren.

Hier ein schnelles Beispiel:


    public partial class WebForm1 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

            repeater1.DataSource = LoadPeople();

            repeater1.DataBind();

        }


        private IEnumerable<Person> LoadPeople()

        {

            return new List<Person>

            {

                new Person { FirstName = "Hans", LastName = "Wurst" },

                new Person { FirstName = "Peter", LastName = "Pan" }

            };

        } 


    }


    public class Person

    {

        public string FirstName { get; set; }


        public string LastName { get; set; }

    }



        <ul>

            <asp:Repeater runat="server" ID="repeater1" >

                <ItemTemplate>

                    <li><%# ((Person)Container.DataItem).FirstName %></li>

                </ItemTemplate>

            </asp:Repeater>

        </ul>

es gibt aber noch genügend andere datengebundene steuerelemente, die zur darstellung genutzt werden können.

  • Autor

Ja ich möchte den Code auch garnicht in der aspx Seite haben, da sonst die Verwendung vom MVC Pattern hinfällig wäre.

Das Problem ist ja eben die code behind Datei, welche nicht vorhanden ist.

Ich werde das gleich nochmal genauer prüfen. Vielleicht habe ich auch was falsch gemacht. Ich werde dann genau beschreiben was ich mache und was ich finde, damit man es besser nachvollziehen kann.

  • Autor

Ich glaube ich habe mein Problem gefunden. Ich habe keine WebForms erstellt, sondern MVC 2 Seiten, welche keine code behind Datei haben.

Genau so habe ich mir das vorgestellt.

Danke für diesen Tipp!

Allerdings habe ich bei der Umstellung das Problem, dass ich jetzt folgenden Fehler beim Aufruf der Seite bekomme:

Die Ansicht bei "~/Views/Admin/Group.aspx" muss von ViewPage, ViewPage<TViewData>, ViewUserControl oder ViewUserControl<TViewData> abgeleitet werden.
Das liest sich, als wenn ich jetzt am Controller auch etwas umstellen muss. Meine cs Datei sieht ähnlich aus wie deine, bis auf dass ich noch keine Funktionen hinterlegt habe. Der Controller sieht noch so aus, wie er für die normale View war:
        //

        // GET: /Admin/Group

        public ActionResult Group()

        {

            return View();

        }

Bearbeitet von Shadowman

Hast Du eine ASP.NET MVC oder ASP.NET WebForms Anwendung?

Im ersten Post schreib Du etwas von 'asp:' Tags und jetzt etwas von MVC.

Bei MVC brauchst Du keine Benutzersteuerelemente von ASP.NET

Mein Beispiel ist für eine WebForms-Anwednung.

  • Autor

Ich habe eine MVC Anwendung.

Innerhalb dieser MVC Anwendung verwende ich in den aspx Dateien 'asp:' Tags.

Mit der Aussage, dass ich bei ASP.NET MVC keine Benutzersteuerelemente von ASP.NET benötige hast du mich durcheinander gebracht. Ich Brauche zwingend Elemente, welche ich dynamisch füllen und damit arbeiten kann.

Wenn ich jetzt Funktionen hinterlegen möchte, muss ich die warscheinlich in der entsprechenden Controller Klasse hinterlegen (richtig?). Leider habe ich genau zu diesem Thema keinerlei Anleitungen gefunden, weswegen dann die Vermutung aufkam, dass es anders gehen müsste.

Kannst du mir dazu vielleicht eine gute Seite schicken, auf der die genaue Verwendung des Controllers und das ansteuern von Elementen der View beschrieben wird, oder das vielleicht sogar erklären, wenn du Zeit hast?

Mfg Shadowman

Anbei das Beispiel mit einer ASP.NET MVC Anwendung


// Controller


    public class ValuesController : Controller

    {

        public ActionResult Index()

        {

            var persons = LoadPeople();


            return View(persons);

        }


        private IEnumerable<Person> LoadPeople()

        {

            return new List<Person>

            {

                new Person { FirstName = "Hans", LastName = "Wurst" },

                new Person { FirstName = "Peter", LastName = "Pan" }

            };

        } 

    }


    public class Person

    {

        public string FirstName { get; set; }


        public string LastName { get; set; }

    }


// View


<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Collections.Generic.IEnumerable<MvcApplication1.Controllers.Person>>" %>


<!DOCTYPE html>


<html>

<head runat="server">

    <meta name="viewport" content="width=device-width" />

    <title>Index</title>

</head>

<body>

    <div>

        <ul>

            <% foreach (var person in Model)

               { %>

                    <li>

                        <span><%= person.FirstName %> <%= person.LastName %></span>

                    </li>

               <% } %>

        </ul>

    </div>

</body>

</html>

Da ich eher die Razor-Engine bevorzuge, falls wir mal was mit MVC machen, kann es sein, die Aussage von mir betreffs den Steuerelementen von ASP.NET nicht 100%ig richtig ist :-)

Als erste Anlaufstelle würde ich die Seite asp.net empfehlen.

Ansonsten Microsoft Virtual Academy

Bearbeitet von lbm1305

Seit Visual Studio kannst du mittels One ASP.NET MVC und WebForms mischen, was wohl hier der Fall ist. Ich würde dir raten dich auf eins zu beschränken und MVC ist hier der wohl zukunftsweisendere Weg.

Keine Angst: du kannst auch mit MVC dynamische Strukturen implementieren. Ich würde dir aber raten, dich vorher einmal intensiver mit dem Thema zu beschäftigen.

Die Seite von ASP.NET erklärt viel anhand von Beispielprojekten. Verweist auch auf kostenlose Video-Serien bei Pluralsight.

MVA => Video-Serien, die viele Themen abdecken, so auch ASP.NET MVC

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.