c# - 如何使用 ViewModel 将动态数据集提供给单个 View

标签 c# asp.net-mvc viewmodel

(第一次发帖,对 MVC 还很陌生)我目前有一个 MVC/C# 应用程序,用户可以在其中选择 ID 列表,然后选择报告类型(8 种可能的不同报告调用 8 种不同的数据库 View )。我将所有这些参数传递给 Controller ​​。根据所选的报告类型,我想获取数据,将其发送回 View ,然后以网格/表格格式显示数据。

我尝试通过 ViewBag 和 ViewData 发送数据,但在使用 @foreach 解析实际列/数据时遇到了问题。这是我决定尝试 ViewModels 的时候。

//My ViewModel....
//I know that I am missing the {get;set;} code which is where I also
// need help with.  I need to pass the selected ID's to each database view and 
// perform additional query requests (i.e. Distinct, Order By). 
// Sample query:
// var dd = (from p in _db.Report1 select new { sId = p.ReportID, UserName = p.Submitted_By, 
//      Balance = p.TotalDebt}).Distinct();
// dd = dd.Where(w => chosenUserIDs.Contains(w.sID));
// dd.OrderBy(p => p.sId).ThenBy(p => p.UserName).ThenBy(p => p.Balance);

public class UserReportsViewModel
{
    public List<namespace.report1> Report1 = new List<namespace.report1>();
    public List<namespace.report2> Report2 = new List<namespace.report2>();
    public List<namespace.report3> Report3 = new List<namespace.report3>();
    ...
}

//My Controller
UserReportsViewModel UserReportVM = new UserReportsViewModel();
switch (reportType)
{
    case "REPORT1":
        //Pass the selected ID's and get the data back from Report1 db view
        // not quite sure how to do this.
        break;
    case "REPORT2":
        break;
    case "REPORT3":
        break;
    default:
        break;
}
return View(UserReportsVM);

我走在正确的轨道上吗?我还遇到了一些关于部分 View 和 View 调用/引用正确的部分 View (?)的事情。较旧的语言要实现这一点要简单得多,但我真的很喜欢 MVC/.Net/C#。

至于我的数据库,我使用的是 CodeFirst Entity Framework 。

最佳答案

我强烈建议您为每个报告设置 View 、 View 模型和操作。只需根据客户端中请求的报告调用正确的端点。

或者,如果您想使用一个端点(操作)执行此操作,请指定您要返回的 View 。如果您不指定 View 名称,它会根据操作名称返回一个 View ,但您可以指定要呈现的 View 。

return View("ViewToRender", viewModel);

如果你想花哨一点,你可以用一个 View 来做。在 View 模型中包含一个带有数据的布局对象......这样你就可以使用一个 View 模型。布局将是“列信息字段”的列表。 Column1 将具有 This header、this width 等。它将绑定(bind)到 GenericReportViewModel.Column1。

从那里,您只需将您的数据投影到该通用 View 模型中。

关于c# - 如何使用 ViewModel 将动态数据集提供给单个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947032/

相关文章:

c# - 如何使用C#提交http表单

c# - 在 C# .NET 应用程序的整个生命周期中使用 DecisionTree

javascript - 在 Bootstrap 下控制间距

c# - 如何将 Json 参数绑定(bind)到 ASP.NET 中的 Web Api 参数?

wpf - DataTemplate 具有非空构造函数的 ViewModel ?

asp.net-mvc-2 - 在 ASP.NET MVC 2 中使用 ViewModel - 多种形式

c# - 使用 javascript 更改旧日期的文本颜色

c# - 将 Attribute with AttributeTargets = Method 应用于类中的所有方法

c# - 如何将对象转换为未知的泛型类型?

javascript - 使用 JavaScript/Knockout 下拉列表中选定的值填充 MVC3 View 模型?