【问题标题】:Passing controller calculation logic to view with ViewBag使用 ViewBag 传递控制器计算逻辑来查看
【发布时间】:2012-06-21 17:54:35
【问题描述】:

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

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());
 }

【问题讨论】:

  • 如果我是你,我会创建一个视图将使用的视图模型。我不会在视图中进行计算。是的,gdoron 说的……

标签: c# asp.net-mvc asp.net-mvc-3 entity-framework viewbag


【解决方案1】:

最好的做法是根本不使用ViewBag

将您想要使用的所有数据放入 ViewModel 的视图中。

保持视图清洁以进行计算,并仅将其用于演示。

【讨论】:

  • 我想我感到困惑的部分是我只想显示来自单个模型的数据(而不是组合多个模型),但我只想对该模型执行一些计算并将计算发送回视图。使用这些计算创建一个视图模型,我不是将计算存储在数据库中并使用视图模型检索吗?
  • @user547794。您可以创建一个包含小模型的大模型。那是最好的办法。尽管您可以在视图中编写 LINQ 和大量 C# 代码,但它已被弃用。
猜你喜欢
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 2020-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
相关资源
最近更新 更多