您好,我正在尝试将多个模型传递到我的MVC视图中。我创建了一个View Model Class,我从GetDeviceSpecificationData()方法中获取数据,然后将其传递给Action Result GetDeviceSpecification()中的View我在下面的语句中收到错误。
@foreach (var spec in Model.myDeviceSpecifications)
错误是对象引用未设置为对象的实例。 App_Web_eervchlw.dll中出现“System.NullReferenceException”类型的异常,但未在用户代码中处理
我的ViewModelClass
public class InventoryViewModel
{
public List<DeviceSpecifications> myDeviceSpecifications { get; set;}
}
我的方法是从我的数据库获取设备规格数据
public List<DeviceSpecifications> GetDeviceSpecificationData()
{
var myDeviceSpecifications = db.DeviceSpecifications.Include(d => d.Specification).Include(d => d.Value).Include(d => d.DSID).Include(d => d.SpecID).Include(d => d.DeviceID);
return myDeviceSpecifications.ToList();
}
我的行动结果
public ActionResult GetDeviceSpecification()
{
InventoryViewModel mymodel = new InventoryViewModel();
mymodel.myDeviceSpecifications = GetDeviceSpecificationData();
return View(mymodel);
}
和我的观点
div class="form-group">
@Html.LabelFor(model => model.myDeviceSpecifications, "Specification", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<select id="devspec">
@foreach (var spec in Model.myDeviceSpecifications)
{
<option value="@spec.SpecID">@spec.Specification</option>
}
</select>
</div>
</div>
答案 0 :(得分:0)
在InventoryViewModel类中,您声明了一个列表但没有初始化它 解决方案是创建一个构造函数并初始化列表
public class InventoryViewModel
{
public List<DeviceSpecifications> myDeviceSpecifications { get; set;}
public InventoryViewModel()
{
myDeviceSpecifications = new List< DeviceSepecifications >();
}
}
每当有列表时,请始终遵循此方法。