Создание большого количества ASPX-страниц для добавления данных в различные таблицы. Есть ли способ лучше? - PullRequest
0 голосов
/ 21 апреля 2009

Я работаю над сайтом CRUD с множеством очень похожих форм для добавления новых данных. Другими словами:

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

Я продолжаю думать про себя: «Само по себе, было бы действительно неплохо иметь один Add.aspx вместо того, чтобы переписывать так много похожих страниц - плюс все эти ООП-ботаники сочтут меня крутым, так как я Повторно использую вместо копирования / вставки!"

Итак, предположив, что я на правильном пути, если бы мне пришлось перейти на одну страницу Add.aspx, как я мог бы представить все наборы полей для каждого объекта? Я думал о группе панелей или элементов div, которые я мог бы скрыть / показать, но не уверен, что мне действительно нравится это решение. Есть ли лучший способ сделать это, или я должен просто сдаться и вернуться к нескольким плохим страницам Добавить Объект .aspx страниц?

Кроме того, это обычное приложение для веб-форм (3.5). К сожалению, в этом нет ничего хорошего для ASP.NET MVC. Кажется, что должно быть такое тривиальное решение, и я просто слишком обдумываю вещи, но не могу придумать одно и поэтому перехожу к переполнению стека. :)

Ответы [ 3 ]

4 голосов
/ 21 апреля 2009

Возможно, вам стоит взглянуть на динамические данные ASP.NET или дозвуковой проект . Оба позволяют очень быстро создавать веб-сайты типа CRUD, поскольку они поддерживают «строительные леса» (страницы редактирования генерируются автоматически на основе модели базы данных).

2 голосов
/ 21 апреля 2009

Возможно, лучшим способом было бы иметь одну страницу с именем Add.aspx, а затем на основе строки запроса, которую вы ей отправляете (т. Е. Add.asps? Type = game), вы можете настроить форму и логику для конкретного типа. объект, с которым вы пытаетесь работать.

1 голос
/ 21 апреля 2009

Другим вариантом является создание подкласса Page, а затем сделать ваши страницы наследуемыми от него, чтобы у вас было одно место со всеми общими функциями.

Например:

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);
        }
    }
}

Ваши страницы будут наследоваться от этого:

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
    }
}

Это должно сделать создание страниц намного быстрее и проще, и дает вам немного больше контроля над тем, как данные извлекаются и сохраняются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...