【问题标题】:MVC - Pass ViewModel to View using c#MVC - 使用 c# 将 ViewModel 传递给 View
【发布时间】:2011-10-31 13:42:07
【问题描述】:

我有一个这样的 ViewModel:

public class EmployeeViewModel
{


    Employees employee{ get; set; }
    Budget budget { get; set; }



}

我喜欢将此视图模型传递给执行创建需要两个表的视图。

我尝试在控制器中执行以下操作,将信息传递给视图但没有成功:

    EmployeeViewModel pvm = new EmployeeViewModel()
    return View(pvm);

原因是员工和预算的价值都为空。 如何将此信息传递给视图,以便它知道两个表?

【问题讨论】:

  • 请不要冒犯。我没有看到员工或预算的任何初始化......它是否发生在构造函数中?
  • 你能提供更多关于你的观点的信息吗?您是否收到页面错误,或者什么也没发生?当您说表格时,我假设您的意思是您的员工和预算模型对应的数据库中的表格?当您说:“...does a create...”时,您的意思是插入数据库吗?

标签: model-view-controller viewmodel


【解决方案1】:

如果这样做,您将在 ViewModel 属性中获得引用:

public class EmployeeViewModel
{
    Employees employee { get; set; }
    Budget budget { get; set; }

    public EmployeeViewModel()
    {
         employee = ... initialize Employee list/set...
         budget = ... initialize budget
    }

}

如果员工和预算是 LINQ/ADO EF 模型,您可以在控制器中附加数据库中的数据:

public class BudgetController : Controller {

  public ViewResult Index() {
    var db = new YourContextClass();
    EmployeeViewModel pvm = new EmployeeViewModel();
    pvm.employees = db.Employees.All(); // or some where condition
    pvm.budget = db.Budget.FirstOrDefault(b=> b.Year == DateTime.Now.Year); // if you have Year property in budget model
    return View(pvm);
  }

}

【讨论】:

  • 这是我在 cmets 中问的......从来没有得到答案 LOL
猜你喜欢
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2013-07-14
相关资源
最近更新 更多