【问题标题】:Viewmodel set up Aspt.net MVC 6Viewmodel 设置 Aspt.net MVC 6
【发布时间】:2016-03-31 18:33:54
【问题描述】:

我无法理解如何在 Asp.net MVC 中实现 ViewModel,我有以下表格:

表格

ID、数据

报告

ID、FormID、所有者、类别、状态、提交日期

报告值

ID、ReportID、标题、值

我正在寻找一种在 ReportValues.ReportID = Report.ID 的 ViewModel 中显示和编辑 Report 和 ReportValues 的方法

ReportValues 将有多个与报告相关的条目。

我在这里查看了类似的问题,并尝试按照教程 (http://techfunda.com/howto/262/list-data-using-viewmodel) 并空手而归。

如果您需要更多信息,请告诉我,并提前感谢您的任何回复!

【问题讨论】:

  • 你能贴出你试过的代码吗?

标签: asp.net-mvc asp.net-mvc-viewmodel


【解决方案1】:

您的视图模型只不过是一个类。您可以通过多种方式解决此问题,但这里有一个示例。

像往常一样创建 3 个类。

public class Form
{
    public int Id { get; set; }
    public string Data { get; set; }
}

public class ReportValues
{
    public int Id { get; set; }
    public int ReportId { get; set; }
    public string Title { get; set; }
    public string Value { get; set; }
}

public class Report
{
    public int Id { get; set; }
    public int FormId { get; set; }
    public string Owner { get; set; }
    public string Category { get; set; }
    public string Status { get; set; }
    public DateTime SubmissionDate { get; set; }
}

然后,像这样创建您的 ViewModel 类以包含上述三个类。

public class ReportViewModel
{
    public Form Form { get; set; }
    public ReportValues ReportValues { get; set; }
    public Report Report { get; set; }
}

在您的视图中,您可以像在控制器中一样访问您的三个类及其属性。 Model.Form.Id

根据您的数据类型,ReportValues 可能是Report 的属性,但这完全取决于您的数据结构。您需要使用所需的任何方法(实体框架、ADO 等)填充类,然后才能将它们传递到视图并使用它们。

【讨论】:

  • 为了澄清,前 3 个类在 Models 文件夹中,ReportViewModel 应该放在同一个文件夹中还是 ViewModels 文件夹中?
  • 我不知道有 Models AND ViewModels 文件夹。您的模型和视图模型都应该进入 Models 文件夹。还有一个 Views 文件夹,但它包含您所有的 cshtml 文件。如果您想真正很好地分离您的类,我建议您使用类库项目来存储您的 MVC 项目引用的 Form、Report 和 ReportValues 类。此外,您的数据访问将发生在另一个类库中。
  • 我正在使用最新版本的 VS、Asp.net 和 MVC,它有一个 ViewModels 文件夹,我现在将把第 4 类放在 Models 文件夹中。谢谢
  • 我想我应该摆脱我的旧 VS 2013 并跳上 2016 年的火车。谢谢(你的)信息。我会留意额外的文件夹。
猜你喜欢
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多