MVC 视图模型抓取单个记录而不是记录列表,重写

MVC View Model Grab single record not a list of records, rewrite

上周我意识到我的视图模型正在填充记录列表,而我真正想要的只是从我的视图中选择的记录的单个记录。我推断是我的视图模型出错了,但我似乎无法思考如何更改它,所以它只是吐出选定的记录,而不是数据库中的记录列表。

public class SummaryVM : BaseViewModel
{
    public IList<RecordVM> Records { get; set; }
    public SummaryVM()
    {
        this.Records = new List<RecordVM>();
    }
}

我想我想太多了,就像我什么都做一样。

编辑:

新建视图模型

public class SummaryVM : BaseViewModel
    {
    public RecordVM Record { get; set; }
}

我的控制器

    public ActionResult Summary(int id)
    {
        var vm = new SummaryVM
        {
            Record = new RecordVM()
        };

        return View(vm);
    }

将集合更改为单个实例?

public class SummaryVM : BaseViewModel
{
    public RecordVM Record { get; set; }
}

现在你必须确保无论你在哪里使用这个视图模型,你的代码都会更新以将其视为单个对象而不是集合([=13= 上没有 foreach 循环等] 属性)

请注意,我们没有将 Record 属性 初始化为 Record 实例的构造函数。因此,您需要在访问记录类型

上的任何 属性 之前明确执行此操作
var vm= new SummaryVM { Record = new RecordVM() };
vm.RecordId = 123;

在访问其任何属性之前对记录 属性 执行 null 以防止 "Object Reference not set to an instance" 错误

@model SummaryVM
<h2>Record</h2>
@if(Model.Record!=null)
{
  <h3>@Model.Record.RecordI</h3>
}