首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP.Net中使用声明性方法与程序性方法的优缺点是什么?

问在ASP.Net中使用声明性方法与程序性方法的优缺点是什么?
EN

Stack Overflow用户
提问于 2009-07-18 14:29:48
回答 3查看 1.7K关注 0票数 5

使用此模型的优点/缺点是什么?

代码语言:javascript
复制
<asp:GridView Id="grdEmployees" runat="server" DataSourceID="objEmployees">
    ...
</asp:GridView>

与以编程方式创建控件并将数据绑定到它们相比,等等...?

在什么情况下应该使用每种方法?

EN

回答 3

Stack Overflow用户

发布于 2009-07-18 14:51:11

这里没有对错之分--这取决于你想要实现的目标。

你可以安全地使用static controls,当你知道你的布局不会改变(即一个固定列数的网格),或者任何未来可能的改变都可能是静态的(你的网格中的一个新列)。这种方法非常好,而且在一般的现实世界中明显更快。

如果您需要flexibility,那么您需要以编程方式生成控件(即,您需要生成数量可变的网格-或任何其他控件)。为了灵活起见,我们的意思是你的布局需要考虑到变量值,你直到运行时才能知道。

票数 2
EN

Stack Overflow用户

发布于 2009-07-18 14:51:55

我发现这两种模型都有用处,但倾向于尽可能在aspx页面中使用标记,因为它更容易阅读,并帮助我将视图代码与逻辑代码分开。当我需要动态数量的控件时,我可以通过编程方式创建控件并将数据绑定到这些控件。一个很好的例子可能是,当您为用户搜索条件动态生成一组下拉列表时--我会这样做:

代码语言:javascript
复制
SqlDataReader dr;

// Set up database connection and set dr to search query.

while(dr.Read())
{
    Literal name = new Literal();
    name.Text = dr["Name"] + ": ";

    Page.Controls.Add(name);

    DropDownList ddl = new DropDownList();
    ddl.ID = "Search_" + dr["ID"];

    SqlDataReader dr2;

    // Set up database connection and set dr2 to search items query.

    while(dr2.Read())
    {
        ListItem li = new ListItem(dr2["Name"], dr2["Value"]);
        ddl.Item.Add(li);
    }

    Page.Controls.Add(ddl);
}

另一件要记住的事情是,您可以在aspx页中创建标记控件,然后将它们绑定到在代码隐藏中填充的自定义DataSets。

票数 1
EN

Stack Overflow用户

发布于 2009-07-18 14:47:57

UI状态应该只受它所代表的业务流程的影响。因此,您应该渴望让您的UI根据业务模型中的更改自动更新。如果您手动编写UI,那么您更有可能遇到不能准确反映业务模型状态的情况。对UI进行声明性编程消除了大部分这方面的问题。如果可能,请使用声明性方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1147677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档