我正忙碌一个ASP.NET核心MVC应用程序,并且我正在尝试填充一个下拉列表。我已经创建了一个视图模型,并且我已经在我的StoresController
中添加了一个方法,该方法返回一个我希望在下拉列表中显示的商店列表。由于我对asp还很陌生,我一直在学习一些在线教程。
查看型号:
public class StoreListViewModel
{
public List<StoreList> StoreList { get; set; } = new List<StoreList>();
}
public class StoreList
{
public string StoreId { get; set; } = null!;
public string StoreName { get; set; } = null!;
}
StoresController
:
public IActionResult LoadStoreList()
{
if (ModelState.IsValid)
{
var storeList = new StoreListViewModel().StoreList.Select
(x => new SelectListItem { Value = x.StoreId, Text = x.StoreName }).ToList();
ViewBag.Stores = storeList;
}
return NotFound();
}
我尝试使用ViewBag
来调用我的LoadStoreList()
方法。
<select name="storeList" class="form-control" asp-items="@(new SelectList(ViewBag.Stores, "Value", "Text"))"></select>
加载页面时出现以下错误
值不能为空。(参数'items')
我需要下拉列表的页面是我的CreateUser.cshtml
,它绑定到我的UserModel
,并且有一个UsersController
。我创建的列出商店的方法在我的StoresController
中,它绑定到我的StoresModel
。所以我不确定是否是这个问题造成的。
我已经与此斗争了几天,如果有人能帮助我得到这个工作或告诉我一个更好的方法,这将是伟大的。
- 编辑
**UserIndex()方法是当我的用户页面打开时触发的第一个方法,我是否从那里调用LoadStoreList()**方法?
用户控制器
public async Task<IActionResult> UsersIndex()
{
return _context.UsersView != null ?
View(await _context.UsersView.ToListAsync()) :
Problem("Entity set 'ApplicationDbContext.Users' is null.");
}
2条答案
按热度按时间uhry853o1#
我尝试使用ViewBag调用LoadStoreList()方法。
ViewBag不能用于调用任何方法。您只需在呈现显示下拉列表页面的方法中设置
ViewBag
的值。根据您的描述,您说需要下拉列表的页面是
CreateUser.cshtml
。假设您使用CreateUser
操作呈现CreateUser.cshtml
页面。CreateUser.cshtml:
控制器:
您的Dbcontext应类似于:
83qze16e2#
不要使用viewbag来存储列表数据。让你的视图页面模型包括列表,例如:
在您的控制器中您的控制器:
在创建用户视图名称中:
或