如何从另一个控制器获取变量
How to get variables from another controller
我有两个控制器:工作和家庭
现在作业会计算停止作业的数量以及在哪个位置,如下所示
public void Stopped()
{
int HBAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
int CRStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 2).Count();
int MAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 3).Count();
int QCStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 4).Count();
int LTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 5).Count();
int PTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 6).Count();
int SPStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 7).Count();
}
然后我想在主控制器中初始化作业控制器并从 stopped() 方法中获取各个变量,如下所示
ViewBag.HBAStopped = j.Stopped();
如何将 HBAStop 变量添加到 viewbag?我可以通过将它们分别变成 return 方法来解决所有这些问题,但这相当于大约 30 种方法,并且看起来有点矫枉过正和不整洁。我尝试了各种方法都没有成功,return 方法是目前唯一的选择
如果需要我可以提供更多信息,谢谢
似乎每个停止计数之间的唯一区别是 LocationID
。在这种情况下,您可以只创建一个方法来处理所有这些问题:
public int GetStoppedCount(int locationId)
{
return db.Jobs.Where(x => x.Status == "Stopped"
&& x.LocationID == locationId).Count();
}
然后你可以这样做:
ViewBag.HBAStopped = GetStoppedCount(1);
等...
只是旁注,我不会过分依赖幻数,例如
db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
其中1
有点模棱两可。首选枚举或静态常量,例如:
public static class LocationConstants
{
public const int HBAStop = 1;
public const int CRStop = 2;
// etc...
}
然后你可以这样做:
ViewBag.HBAStopped = GetStoppedCount(LocationConstants.HBAStop);
哪个更具可读性。
//1。创建结构:
struct JobStops
{
int HBAStop;
int CRStop;
int MAStop;
int QCStop;
int LTStop;
int PTStop;
int SPStop;
}
//2- 像这样更新你的方法:
public JobStops Stopped()
{
JobStops _jobstops ;
_jobstops. HBAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
_jobstops. CRStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 2).Count();
_jobstops. MAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 3).Count();
_jobstops. QCStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 4).Count();
_jobstops. LTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 5).Count();
_jobstops. PTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 6).Count();
_jobstops. SPStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 7).Count();
return _jobstops;
}
//3- ViewBag.HBAStopped = j.Stopped();
我有两个控制器:工作和家庭
现在作业会计算停止作业的数量以及在哪个位置,如下所示
public void Stopped()
{
int HBAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
int CRStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 2).Count();
int MAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 3).Count();
int QCStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 4).Count();
int LTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 5).Count();
int PTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 6).Count();
int SPStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 7).Count();
}
然后我想在主控制器中初始化作业控制器并从 stopped() 方法中获取各个变量,如下所示
ViewBag.HBAStopped = j.Stopped();
如何将 HBAStop 变量添加到 viewbag?我可以通过将它们分别变成 return 方法来解决所有这些问题,但这相当于大约 30 种方法,并且看起来有点矫枉过正和不整洁。我尝试了各种方法都没有成功,return 方法是目前唯一的选择
如果需要我可以提供更多信息,谢谢
似乎每个停止计数之间的唯一区别是 LocationID
。在这种情况下,您可以只创建一个方法来处理所有这些问题:
public int GetStoppedCount(int locationId)
{
return db.Jobs.Where(x => x.Status == "Stopped"
&& x.LocationID == locationId).Count();
}
然后你可以这样做:
ViewBag.HBAStopped = GetStoppedCount(1);
等...
只是旁注,我不会过分依赖幻数,例如
db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
其中1
有点模棱两可。首选枚举或静态常量,例如:
public static class LocationConstants
{
public const int HBAStop = 1;
public const int CRStop = 2;
// etc...
}
然后你可以这样做:
ViewBag.HBAStopped = GetStoppedCount(LocationConstants.HBAStop);
哪个更具可读性。
//1。创建结构:
struct JobStops
{
int HBAStop;
int CRStop;
int MAStop;
int QCStop;
int LTStop;
int PTStop;
int SPStop;
}
//2- 像这样更新你的方法:
public JobStops Stopped()
{
JobStops _jobstops ;
_jobstops. HBAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 1).Count();
_jobstops. CRStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 2).Count();
_jobstops. MAStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 3).Count();
_jobstops. QCStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 4).Count();
_jobstops. LTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 5).Count();
_jobstops. PTStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 6).Count();
_jobstops. SPStop = db.Jobs.Where(x => x.Status == "Stopped" && x.LocationID == 7).Count();
return _jobstops;
}
//3- ViewBag.HBAStopped = j.Stopped();