我在MVC Html View中使用以下代码
@Html.DropDownListFor(m => m.Company,
new SelectList(ViewBag.Companies, "Key", "Value", Model.Company))
我的控制器是这样的:
[HttpGet]
public ActionResult Login()
{
ViewBag.Companies = (from a in _context.Companies
select new {Key = a.Id, Value = a.Name});
return View();
}
但显示以下错误:
对象引用未设置为对象的实例。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:System.NullReferenceException:不是对象引用 设置为对象的实例。
来源错误:
第30行:第31行:第32行:
@ Html.DropDownListFor(m => m.Company,第33行:新 SelectList(ViewBag.Companies,“Key”,“Value”,Model.Company))第34行:
此代码用于登录屏幕,其中包含用户名,密码和公司下拉列表。
答案 0 :(得分:1)
您在视图中引用了Model.Company
。这将是null,因为它永远不会从控制器传递。
答案 1 :(得分:1)
首先,您应该在View中设置ViewModel,如下所示:
@model YourClassname
其次,你应该得到你的Company
,当你返回你的视图时,你应该像这样传递你的项目:
[HttpGet]
public ActionResult Login()
{
ViewBag.Companies = (from a in _context.Companies
select new {Key = a.Id, Value = a.Name});
// get your Company
var cmp = _context.Companies.First(); //for example
return View(cmp);
}