MVC DropDownListFor - "Object reference not set to instance of object"
MVC DropDownListFor - "Object reference not set to instance of object"
我的部分视图中的 dropdownlistfor 出现空引用错误。我似乎无法找到我遗漏或做错了什么来获取空对象引用。
型号代码:
CommonHerpNames.cs
public class CommonHerpNames
{
[Key]
public int CommonHerpId { get; set; }
public string HerpName { get; set; }
}
NewReptileViewModel.cs
public class NewReptileViewModel
{
public IEnumerable<CommonHerpNames> CommonAnimalNames { get; set; }
public ReptileModel ReptileModel { get; set; }
}
控制器代码:
public ActionResult _AddReptile()
{
var commonAnimalTypes = _context.CommonHerps.ToList();
var viewModel = new NewReptileViewModel
{
CommonAnimalNames = commonAnimalTypes
};
return PartialView("_AddReptile", viewModel);
}
部分视图代码:
<div class="form-group">
@Html.DropDownListFor(model => model.ReptileModel.CommonHerpTypeId, new SelectList(Model.CommonAnimalNames, "CommonHerpId", "HerpName"), "Select Animal")
</div>
主视图代码:
<div>
@Html.Partial("_addReptiles")
</div>
郑重声明,我知道我的 CommonHerps 上下文很好,因为我最近完成了 Add-Migration 和 Update-Database -Verbose .
使用Html.Partial()
不会调用您的服务器方法。它只是呈现局部视图(将主视图中的模型传递给局部视图)并抛出错误,因为 CommonAnimalNames
是 null
并且您无法为 [= 初始化新的 SelectList
14=].
将主视图中的代码更改为
@Html.Action("_AddReptile") // add controller name as 2nd parameter if necessary
或
@{ Html.RenderAction("_AddReptile"); }
这将调用您的 _AddReptile()
方法,该方法将依次初始化您的视图模型并设置 CommonAnimalNames
的值。
您可能还想考虑用 [ChildActionOnly]
属性标记 _AddReptile()
以防止它被浏览器调用。
我的部分视图中的 dropdownlistfor 出现空引用错误。我似乎无法找到我遗漏或做错了什么来获取空对象引用。 型号代码:
CommonHerpNames.cs
public class CommonHerpNames
{
[Key]
public int CommonHerpId { get; set; }
public string HerpName { get; set; }
}
NewReptileViewModel.cs
public class NewReptileViewModel
{
public IEnumerable<CommonHerpNames> CommonAnimalNames { get; set; }
public ReptileModel ReptileModel { get; set; }
}
控制器代码:
public ActionResult _AddReptile()
{
var commonAnimalTypes = _context.CommonHerps.ToList();
var viewModel = new NewReptileViewModel
{
CommonAnimalNames = commonAnimalTypes
};
return PartialView("_AddReptile", viewModel);
}
部分视图代码:
<div class="form-group">
@Html.DropDownListFor(model => model.ReptileModel.CommonHerpTypeId, new SelectList(Model.CommonAnimalNames, "CommonHerpId", "HerpName"), "Select Animal")
</div>
主视图代码:
<div>
@Html.Partial("_addReptiles")
</div>
郑重声明,我知道我的 CommonHerps 上下文很好,因为我最近完成了 Add-Migration 和 Update-Database -Verbose .
使用Html.Partial()
不会调用您的服务器方法。它只是呈现局部视图(将主视图中的模型传递给局部视图)并抛出错误,因为 CommonAnimalNames
是 null
并且您无法为 [= 初始化新的 SelectList
14=].
将主视图中的代码更改为
@Html.Action("_AddReptile") // add controller name as 2nd parameter if necessary
或
@{ Html.RenderAction("_AddReptile"); }
这将调用您的 _AddReptile()
方法,该方法将依次初始化您的视图模型并设置 CommonAnimalNames
的值。
您可能还想考虑用 [ChildActionOnly]
属性标记 _AddReptile()
以防止它被浏览器调用。