C# 将控制器计算逻辑传递给ViewBag查看

C# 将控制器计算逻辑传递给ViewBag查看,c#,asp.net-mvc,asp.net-mvc-3,entity-framework,viewbag,C#,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,Viewbag,我有一个控制器,它对数据运行一些计算,然后我需要将计算返回到视图。我知道我可以通过ViewBag实现这一点,但我想知道这样做的最佳实践。这些LINQ查询是否应该在视图中执行 public ViewResult Results() { var surveyresponsemodels = db.SurveyResponseModels.Include( s => s.SurveyProgramModel).Include(s => s.PersonModel);

我有一个控制器,它对数据运行一些计算,然后我需要将计算返回到视图。我知道我可以通过
ViewBag
实现这一点,但我想知道这样做的最佳实践。这些
LINQ
查询是否应该在
视图中执行

public ViewResult Results()
{
    var surveyresponsemodels = db.SurveyResponseModels.Include(
        s => s.SurveyProgramModel).Include(s => s.PersonModel);

    ViewBag.PatientFollowUpResult = db.SurveyResponseModels.Count(
        r => r.PatientFollowUp);

    ViewBag.ChangeCodingPractice = db.SurveyResponseModels.Count(
        r => r.ChangeCodingPractice);

    ViewBag.CountTotal = db.SurveyResponseModels.Count();

    return View(surveyresponsemodels.ToList());
 }

最佳做法是根本不使用
ViewBag

将要在视图中使用的所有数据放入视图模型中


保持视图清洁以进行计算,并仅用于演示文稿

最佳做法是根本不使用
ViewBag

将要在视图中使用的所有数据放入视图模型中


保持视图清洁以进行计算,并仅用于演示文稿

我想让我感到困惑的是,我只想显示来自单个模型的数据(而不是组合多个模型),但我只想在该模型上执行一些计算,并将计算发送回视图。使用这些计算创建一个viewmodel,我是否会将计算存储在数据库中并使用viewmodel进行检索?@user547794。您可以创建一个大模型,其中包含小模型。这是最好的办法。虽然您可以在视图中编写LINQ和大量C代码,但它已被弃用。我想我感到困惑的是,我只想显示来自单个模型的数据(而不是组合多个模型),但我只想在该模型上执行一些计算并将计算发送回视图。使用这些计算创建一个viewmodel,我是否会将计算存储在数据库中并使用viewmodel进行检索?@user547794。您可以创建一个大模型,其中包含小模型。这是最好的办法。虽然您可以在视图中编写LINQ和大量C代码,但它已被弃用。如果我是您,我将创建视图将使用的viewmodel。我不愿意在这种情况下进行计算。是的,gdoron说的……如果我是你,我会创建一个视图模型,视图将使用它。我不愿意在这种情况下进行计算。是的,格多龙说的。。。