0

私は、新しいデータを追加するための非常によく似たフォームがたくさんあるCRUDサイトで作業しています。言い換えると:

AddMovie.aspx、AddGame.aspx、AddBeer.aspx、AddAdd.aspx

「自分で、似たようなページをたくさん書き直すのではなく、単一のAdd.aspxがあれば本当にいいのですが、それに加えて、OOPオタクはすべて、代わりに再利用しているので、私はかっこいいと思うでしょう。コピー/貼り付けの!

したがって、私が正しい方向に進んでいると仮定して、単一のAdd.aspxページを使用する場合、各オブジェクトのすべてのフィールドセットをどのように表すことができますか?非表示/表示できる一連のパネルまたはdivについて考えましたが、そのソリューションが本当に好きかどうかはわかりません。それを行うためのより良い方法はありますか、それとも私はあきらめて、複数の悪い古いオブジェクトの追加.aspxページに戻る必要がありますか?

また、これは単純な古い(3.5)Webフォームアプリです。残念ながら、これにはASP.NETMVCの良さはありません。そのような些細な解決策があるはずであり、私は物事を考えすぎているようですが、私はそれを思い付くことができないので、StackOverflowに目を向けます。:)

4

3 に答える 3

4

たぶん、 ASP.NET動的データまたは亜音速プロジェクトを見る必要があります。どちらも「足場」をサポートしているため、CRUDタイプのWebサイトを非常に高速に構築できます(編集ページはデータベースモデルに基づいて自動的に生成されます)。

于 2009-04-20T23:11:53.740 に答える
2

より良い方法は、Add.aspxという単一のページを作成し、それを送信するクエリ文字列(Add.asps?type = game)に基づいて、特定のタイプのオブジェクトのフォームとロジックをカスタマイズすることです。で作業しようとしています。

于 2009-04-20T23:10:16.520 に答える
1

もう1つのオプションは、Pageをサブクラス化してから、ページをそこから継承することです。これにより、すべての一般的な機能を備えた1つの場所が得られます。

例えば:

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

これにより、ページの作成がはるかに迅速かつ簡単になり、データの取得方法と保存方法をもう少し制御できるようになります。

于 2009-04-21T00:23:45.907 に答える