0

我开发了一个网站,它在首页和控制面板上也具有 CRUD 功能。我看到我在尝试连接和 CRUD 时为每个页面编写了相同的代码。

我没有足够的时间研究如何优化我的代码,我只是写了我需要的东西。我也受过苦。但我没有另一个机会。

例如:

我有一个数据库,当然我需要一个连接字符串。我需要将记录读入页面(比如说)blogs.aspx。在另一个页面 news.aspx 中,我需要再次建立新连接并创建一个新的 Sqlconnection 实例。

正如我所说,我现在有 40 多页,并且有很多重复的数据库连接、datagridview 填充代码。

我的问题:

  1. 在母版页(Site.Master)中定义 Connection、DataTable、DataAdapter、Command 实例是否是一种好方法?或者封装概念会阻止我吗?

  2. 如果我编写了一个名为 konnekt.cs 的类,我将如何将其对象继承到当前页面?换句话说,我怎么能从当前页面扩展到 konnekt.cs?

也许我会得到反对票,但我认为这种风险值得学习这些概念。我是 C# 和其他编程语言的新手。

感谢您的提示。

4

3 回答 3

5

您需要做的是学习“关注点分离”的概念。这基本上意味着您根据代码的功能划分代码。现在(根据我从您的问题中了解到的情况),您的所有代码都在一个地方。正如您所注意到的,这不是一件好事。当然它现在可以工作,但是一旦你需要进行修改,你就会遇到问题。

在最基本的情况下,您需要将操作数据库中数据的代码(通常称为数据访问层)和显示该数据的代码(表示层)分开。加载页面(表示层)时,它会调用数据访问层以从中获取数据(页面不直接调用数据库),依此类推。通常,在这两者之间有一个称为业务层的第三层,它具有业务规则逻辑。

在母版页(Site.Master)中定义 Connection、DataTable、DataAdapter、Command 实例是否是一种好方法?或者封装概念会阻止我吗?

这不是一个好主意。母版页属于演示文稿,因此将任何直接调用数据库的内容放在那里都是不行的。

如果我编写了一个名为 konnekt.cs 的类,我将如何将其对象继承到当前页面?换句话说,我怎么能从当前页面扩展到 konnekt.cs?

再一次,永远不要直接从您的页面调用数据库。构造另一个连接到数据库的类,并让页面调用该类

于 2013-03-07T20:23:47.353 回答
0

System Down一样,我的建议是丢弃 pages 代码中的 db 代码。使用 App_Code 文件夹。

在页面文件代码中,您必须编写方法/属性/等来完成页面工作,而不是数据库工作。

常见的页面代码,可以放在ac#文件中(总是在App_Code下),

通过扩展System.Web.UI.Page类。

示例 App_Code/PageBase.cs :

public class PageBase : System.Web.UI.Page
{
    // common code
}

示例 Default.aspx.cs :

public partial class _Default : PageBase // instead of System.Web.UI.Page
{

}
于 2013-03-07T20:37:42.337 回答
0

您可以在其他类中定义这些方法,然后从后面的代码中调用它们。或者在一个公共基类中定义其中一些

2 你必须子类页面,然后你可以创建自己的基类

于 2013-03-07T20:21:01.723 回答