使用此模型的优点/缺点是什么?
<asp:GridView Id="grdEmployees" runat="server" DataSourceID="objEmployees">
...
</asp:GridView>与以编程方式创建控件并将数据绑定到它们相比,等等...?
在什么情况下应该使用每种方法?
发布于 2009-07-18 14:51:11
这里没有对错之分--这取决于你想要实现的目标。
你可以安全地使用static controls,当你知道你的布局不会改变(即一个固定列数的网格),或者任何未来可能的改变都可能是静态的(你的网格中的一个新列)。这种方法非常好,而且在一般的现实世界中明显更快。
如果您需要flexibility,那么您需要以编程方式生成控件(即,您需要生成数量可变的网格-或任何其他控件)。为了灵活起见,我们的意思是你的布局需要考虑到变量值,你直到运行时才能知道。
发布于 2009-07-18 14:51:55
我发现这两种模型都有用处,但倾向于尽可能在aspx页面中使用标记,因为它更容易阅读,并帮助我将视图代码与逻辑代码分开。当我需要动态数量的控件时,我可以通过编程方式创建控件并将数据绑定到这些控件。一个很好的例子可能是,当您为用户搜索条件动态生成一组下拉列表时--我会这样做:
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。
发布于 2009-07-18 14:47:57
UI状态应该只受它所代表的业务流程的影响。因此,您应该渴望让您的UI根据业务模型中的更改自动更新。如果您手动编写UI,那么您更有可能遇到不能准确反映业务模型状态的情况。对UI进行声明性编程消除了大部分这方面的问题。如果可能,请使用声明性方法。
https://stackoverflow.com/questions/1147677
复制相似问题