【发布时间】:2010-08-03 15:58:07
【问题描述】:
如何将一个类传递给另一个类到代码隐藏?
当我调试并检查 Default.aspx 页面中的 myCategoryObj 时,我可以看到对象在调试中。我究竟做错了什么?
我知道我可以在 Default.aspx 中创建对象,但我不应该这样做 我应该能够调用业务逻辑层并请求返回一个对象,然后填充该对象并将其传递回业务逻辑要保存的图层(插入或更新)。
我希望这是有道理的。
Default.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SC1.Models.OBJ;
using SC1.Models.BLL;
using SC1.Models.DAL;
namespace SC1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(Object sender, EventArgs e)
{
// I know I could do this but I don't want to unless I have too.
//Category categoryObj = new Category();
CategoryBLL myCategoryBLL = new CategoryBLL();
Object myCategoryObj = myCategoryBLL.CategoryNew();
// How do I make the code below work or what am I doing wrong.
myCategoryObj.Name = "test";
string test = "";
}
}
}
CategoryBLL.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using SC1.Models.DAL;
using SC1.Models.OBJ;
namespace SC1.Models.BLL
{
public class CategoryBLL
{
// Create a page object
Category myCategoryObject = new Category();
// Create a Data Acces Layer Object
CategoryDAL myCategoryDAL = new CategoryDAL();
public CategoryBLL()
{
}
public DataSet Select()
{
return (myCategoryDAL.Select());
}
public Object CategoryNew()
{
return myCategoryObject;
}
}
}
CategoryDAL.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace SC1.Models.DAL
{
public class CategoryDAL
{
public CategoryDAL()
{
}
string connStr = ConfigurationManager.ConnectionStrings["staceys_cakesConnectionString"].ConnectionString;
// select all
public DataSet Select()
{
SqlConnection sqlConnection1 = new SqlConnection();
string SqlString = "select * from Categories";
SqlDataAdapter da = new SqlDataAdapter(SqlString, connStr);
DataSet ds = new DataSet();
da.Fill(ds, "Categories");
return (ds);
}
// save
// insert
// update
// delete
}
}
Category.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace SC1.Models.OBJ
{
public class Category
{
public int CategoryID { get; set; }
public int ParentID { get; set; }
public string Name { get; set; }
public int DisplayOrder { get; set; }
public bool Active { get; set; }
public Category(){
}
}
}
【问题讨论】:
-
不,这没有意义。您想将一个类传递给一个类,或者将一个对象传递给一个类,并且该对象位于下拉列表中。就我所知。。告诉我们正在发生什么,以及你想要发生什么而不是那样。
-
我试图做的是让背后的代码调用 BLL,然后让它从 DAL 或对象中获取对象,然后当我设置属性时,我可以简单地拥有一个显示保存的函数(object _CategoryObject),它会看到一个 ID 或没有 ID,如果 ID 存在,它会插入一条新记录,如果 ID 已经存在,那么它将更新记录。另外我在想,既然对象是有属性的,那么我不应该在其他任何地方设置属性。
-
我想我一定是错的......所以不用担心我正在努力纠正它。一个汽车类有属性,但业务逻辑层调用数据访问层保存不应该汽车属性是什么?还是我迷失在 OO World 中?
-
在您的 DAL.Select 中,不要返回数据集,而是使用 for each 遍历每个数据行并将该行转换为 Category 的实例。然后将该 Category 对象添加到 List
。全部转换后返回 List