我有一个局部视图,其中包含下拉列表,该列表从名为Months的表中获取值,此视图中使用的部分视图称为PSR
我在控制器中传递了对象:
public ActionResult PSR()
{
var PSRS = _context.PSRs.ToList();
var months = _context.Months.ToList();
var viewModel = new PSRViewModel
{
PSRs = PSRS,
Months = months
};
return View(viewModel);
}
内部局部视图:
@model Project.ViewModels.PSRViewModel
<h5> Month </h5>
<div class="form-group">
@Html.LabelFor(m => m.Month.month)
@Html.DropDownListFor(m => m.Month.month, new SelectList(Model.Months, "Id", "month"), "--Select Month--", new { @class = "form-control" })
</div>
这就是PSR内部的观点:
@model List<Project.ViewModels.PSRViewModel>
@{
ViewBag.Title = "PSR";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
@Html.Partial("~/Views/Doctors/_AddPSR.cshtml", new Project.ViewModels.PSRViewModel()) </div>
那么为什么在运行PSR视图时这个错误会一直出现?即使将对象传递给该视图
这是ViewModel类代码:
namespace Project.ViewModels
{
public class PSRViewModel
{
public PSR PSR { get; set; }
public List<PSR> PSRs { get; set; }
public Doctor Doctor { get; set; }
public List<Month> Months { get; set; }
public Month Month { get; set; }
}
}
我应该把它放在控制器中吗?
var months = new List<Month> {
};
更新 月模型
namespace Project.Models
{
public class Month
{
public int Id { get; set; }
public string month { get; set; }
}
}
答案 0 :(得分:0)
可能会发生这种情况,因为虽然您创建PSRViewModel
但未实例化月份列表。默认情况下,它将使用空值初始化。所以,你可以这样做:
public class PSRViewModel
{
public PSR PSR { get; set; }
public List<PSR> PSRs { get; set; }
public Doctor Doctor { get; set; }
public List<Month> Months { get; set; } = new List<Month>();
public Month Month { get; set; }
}
但是,当然,如果您想将数据从数据库加载到此列表
,它将无济于事答案 1 :(得分:0)
看起来您的主视图不正确,如果您只想查看一个PSRView模型,请更改您的@model,然后稍后将其传递给您的部分。
更改您的PSRView
@model Project.ViewModels.PSRViewModel
@{
ViewBag.Title = "PSR";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
@Html.Partial("~/Views/Doctors/_AddPSR.cshtml", model)
对于多个PSRView
@model List<Project.ViewModels.PSRViewModel>
@{
ViewBag.Title = "PSR";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
@foreach(PSRViewModel m in model){
@Html.Partial("~/Views/Doctors/_AddPSR.cshtml", m)
}