2011-06-29 41 views

回答

2

我推薦使用ObjectDataSource,因爲它導致更清潔的架構,並且更容易處理事件,例如排序和分頁。否則,你的控制必須特別處理這樣的事件,我發現這是一個痛苦的脖子。我總是創建一個業務層,並讓我的Get()方法使用如下所示的簽名。我對這種設計的模型來自這本書,我認爲這是一個偉大的Web窗體資源:

http://www.amazon.com/ASP-NET-2-0-Website-Programming-Programmer/dp/0764584642

在App_Code /業務層:

public class ProductRepository 
{ 
    public List<Product> GetAll(/* params here */ string sortOrder, string orderBy, int startRowIndex, int maximumRows) 
    { 
     // call data access tier for Product entities 
    } 

    public int GetAllCount(/* params here */) 
    { 
     // call data access tier for count of Product entities 
    } 
} 

在Web窗體中:

<asp:ObjectDataSource ID="objProduct" runat="server" 
    TypeName="MyNameSpace.BLL.ProductRepository" 
    SelectMethod="GetAll" 
    EnablePaging="true" 
    SortParameterName="sortOrder" 
    SelectCountMethod="GetAllCount" /> 
+0

如何使用DataSource從對象而不是數據庫中讀取數據? –

+0

我假設你的意思是「ObjectDataSource」。當我嘲笑事物並且還沒有數據庫時,我有時會這樣做。你所做的就是對對象中的列表進行硬編碼。在上面的例子中,你會添加一個成員變量「private List allProducts = null;」。在構造函數(或工廠方法)中,您將使用產品填充「allProducts」,例如「allProducts.Add(new Product {});」 – Brett

-1

代碼少的原則。儘可能在aspx文件中放置。

+0

如何讓邏輯遠離UI?雖然MVC似乎正在這樣... – IrishChieftain

+0

您是否寧願Aspx知道太多東西降低了,或者UI背後的代碼控制太多......您無法不加區分地應用它,但我認爲拖拽用戶界面中的內容往往比拖拽它們進入代碼隱藏更好。 –

+0

我都是在用戶界面中進行聲明式抽象,但是像Razor這樣的東西真的讓我錯誤,因爲邏輯在UI層中沒有地位。 – IrishChieftain

相關問題