Erstellen einer Menge von ASPX-Seiten, um Daten zu verschiedenen Tabellen hinzuzufügen. Gibt es einen besseren Weg?

Ich arbeite auf einer CRUD-Website mit vielen sehr ähnlichen Formularen zum Hinzufügen neuer Daten. Mit anderen Worten:

AddMovie.aspx, AddGame.aspx, AddBeer.aspx, AddAdd.aspx

Ich denke mir immer wieder: "Ich selbst, es wäre wirklich schön, ein einzelnes Add.aspx zu haben, anstatt so viele ähnliche Seiten neu zu schreiben - plus all diese OOP-Nerds würden denken, dass ich cool bin, da ich re-using statt kopieren! " -6-"

Also unter der Annahme, dass ich auf dem richtigen Weg bin, wenn ich mit der einzelnen Add.aspx-Seite gehen würde, wie könnte ich alle Sätze von Feldern für jedes Objekt darstellen? Ich dachte über eine Reihe von Panels oder Divs nach, die ich verstecken/zeigen konnte, aber nicht sicher, ob ich diese Lösung wirklich mag. Gibt es einen besseren Weg, es zu tun, oder sollte ich einfach aufgeben und zurück zu den multiplen schlechten ol' Add Object .aspx Seiten?

Auch ist dies eine einfache ol' (3.5) Web Forms App. Leider ASP.NET MVC-Güte für diesen. Es scheint, als ob es eine so triviale Lösung geben sollte und dass ich einfach überdenke, aber ich kann nicht mit einer kommen und so wende ich mich an Stack Overflow. :)

Antwort auf "Erstellen einer Menge von ASPX-Seiten, um Daten zu verschiedenen Tabellen hinzuzufügen. Gibt es einen besseren Weg? " 3 von antworten

Eine bessere Möglichkeit wäre vielleicht, eine einzelne Seite namens Add.aspx zu haben und dann basierend auf der Abfragezeichenfolge, die Sie senden (d. h. Add.asps?type=game), könnten Sie das Formular und die Logik für den bestimmten Objekttyp anpassen, mit dem Sie arbeiten möchten.

Vielleicht sollten Sie sich ASP.NET dynamic data or the oder das subsonic project. Both allow to build CRUD-type website very fast because they support "scaffolding" (the edit pages are generated automatically based on your database model). ansehen. Beide ermöglichen es, CRUD-Typ Website sehr schnell zu erstellen, weil sie "Gerüstbau" unterstützen (die Bearbeitungsseiten werden automatisch basierend auf Ihrem Datenbankmodell generiert).

Eine weitere Option ist, Die Unterklasse Seite zu unterlegen und dann Ihre Seiten erben zu lassen, sodass Sie einen Ort mit allen gängigen Funktionen haben.

Zum Beispiel:

public abstract class BasePage<T> : System.Web.UI.Page
{
    protected T GetObjectById(int objectId)
    {
        // return new T();
    }
    protected void SaveObject(T obj)
    {
        // Save object to DB here
    }
    protected void DeleteObjectById(int objectId)
    {
        // Delete object
    }

    protected abstract void PopulateUI(T obj);

    protected override void OnLoad(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            int objectId = Convert.ToInt32(Request.QueryString.Get("id"));
            T obj = GetObjectById(objectId);
            PopulateUI(obj);
        }
    }
}

Ihre Seiten würden dann davon erben:

public class AddGame : BasePage<Game>
{
    protected override void PopulateUI(Game game)
    {
        // Populate the UI with game information

        GameNameTextBox.Text = game.Name;
        PublisherNameTextBox.Text = game.Publisher.Name;

        // etc
    }
}

Dies sollte das Erstellen der Seiten viel schneller und einfacher machen und Ihnen ein bisschen mehr Kontrolle darüber geben, wie Daten abgerufen und gespeichert werden.