我是C#的新手,我有一个问题,我尝试将一个变量从一个类传递到另一个类。
我有一个业务层,我收集变量并告诉他们去哪里,我还有一个UI层,我想在点击一个按钮时激活该方法。
UILayer:
private void btnLog_Click(object sender, EventArgs e)
{
BusinessLayer BUS = new BusinessLayer();
BUS.InsertLog(dunno how to reference variables here);
}
BusinessLayer:
public void InsertLog(int CustomerId,
DateTime DateLogged,
string CustomerRef,
int AssignedEmployeeId,
string Description,
int ImpactId,
string RootCause,
string RootFix,
int StatusId,
DateTime FixDate,
float TimeUsed,
string InternalRef)
{
DataLayer dao = new DataLayer();
dao.CommandSqlStatement("INSERT Region (CustomerId,
DateLogged,
CustomerRef,
AssignedEmployeeId,
Description,
ImpactId,
ImpactBrief,
RootCause,
RootFix,
StatusId,
FixDate,
TimeUsed,
InternalRef) " +
"VALUES (" + CustomerId + ", " +
DateLogged + ", '" +
CustomerRef + "', " +
AssignedEmployeeId + ", '" +
Description + "', " +
ImpactId + ", '" +
RootCause + "', '" +
RootFix + "', " +
StatusId + ", " +
FixDate + ", " +
TimeUsed + ", '" +
InternalRef);
}
我只是想知道如何在UILayer中引用变量,因为我已经尝试了几种方法,似乎无法弄明白, 有人可以帮忙吗?
答案 0 :(得分:0)
我假设您在UILayer中可以使用所有这些值,因此您只需将InsertLog方法中的所有参数值放入对方法的调用中
private void btnLog_Click(object sender, EventArgs e)
{
BusinessLayer BUS = new BusinessLayer();
BUS.InsertLog(CostumerId, dateLogged, costumerRef, etc);
}
如果你在UILayer中没有这些值,你只需要从某个地方获取它们。这取决于你分配它们的位置。
答案 1 :(得分:0)
要回答你的问题,我会做一些假设来理解这个问题。您有一个包含TextBox
等控件的表单,其中包含Log
的值,如果不是,您知道需要将哪些值传递给InsertLog
方法。然后你可以简单地调用方法,并传递所需的参数。
要从控件中获取值,您可以这样做 -
BUS.InsertLog(txtBoxCostumerId.Text, /*more parameters */)
或者直接将值改为 -
BUS.InsertLog(costumerId /*more parameters */)
备注 -
建议不要在SQL查询中直接使用值,而是使用Parameters
,因为它们容易出现SQL注入
与业务类一样,参数不应太多,将参数限制为最多tw0或3,如果需要,请使用DTO对象
答案 2 :(得分:0)
首先,在您的类中声明要传递给BL的变量列表:
int CustomerId, AssignedEmployeeId, ImpactId, StatusId;
string InternalRef, CustomerRef, Description, RootCause, RootFix;
DateTime DateLogged, FixDate;
float TimeUsed;
然后,编写一个方法,为每个变量分配所需的值:
private void bindDataBeforeSending()
{
CustomerRef = Request.Form["CustomerId"]; // for example
...
}
然后,调用以正确顺序传递变量的方法:
private void btnLog_Click(object sender, EventArgs e)
{
bindDataBeforeSending();
BusinessLayer BUS = new BusinessLayer();
BUS.InsertLog(CustomerId,DateLogged,CustomerRef,AssignedEmployeeId,Description,ImpactId,RootCause,RootFix,StatusId,FixDate,TimeUsed,InternalRef);
}
如果UI和BL属于两个不同的项目,请务必在UI参考中包含BL。