2011-06-29 38 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

相关问题