2009-04-20 37 views
0

我正在使用很多非常類似的表單來添加新數據。換句話說:創建大量.aspx頁面以將數據添加到各種表格。有沒有更好的辦法?

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

我一直在心裏對自己說,「自我,這將是非常好的,有一個Add.aspx代替重寫這麼多類似的頁面 - 加上所有那些OOP書呆子會認爲我很酷,因爲我正在重新使用,而不是複製/粘貼!

因此,假設我在正確的軌道上,如果我將單獨添加一個Add.aspx頁面,我如何表示每個對象的所有字段集合?我想到了一堆我可以隱藏/顯示的面板或div,但不知道我真的很喜歡這個解決方案。有沒有更好的方式來做到這一點,或者我應該放棄並回到多重壞蛋'添加對象 .aspx頁面?

另外,這是一個普通的ol'(3.5)web表單應用程序。不幸的是,沒有ASP.NET MVC的善意。似乎應該有這樣一個微不足道的解決方案,我只是在思考問題,但我不能拿出一個,所以我轉向堆棧溢出。 :)

+0

每個人需要的信息有多相似?例如,AddMovie和AddGame都包含相同數量的文本框? – 2009-04-20 23:09:59

+0

不,他們沒有相同數量的文本框或字段。 – 2009-04-21 00:13:35

+0

看看ASP.NET動態數據網站 – azamsharp 2009-04-21 04:01:22

回答

4

也許你應該看看ASP.NET dynamic datasubsonic project。兩者都允許非常快地構建CRUD類型的網站,因爲它們支持「腳手架」(編輯頁面是根據您的數據庫模型自動生成的)。

2

一個更好的方法可能是有一個名爲Add.aspx的頁面,然後根據您發送的查詢字符串(即Add.asps?type = game),您可以自定義窗體和邏輯您嘗試使用的特定類型的對象。

+0

這有點什麼我在我原來的職位思考的,但我不知道我喜歡這個主意。 – 2009-04-21 12:13:43

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

這應該可以更快,更容易創建頁面,併爲您提供了數據如何更多的控制被檢索並保存。

相關問題