我想在我的登录表单中添加选择组件/模块的选项。我想在我的家庭控制器中调用GetComponents()方法,该方法读取组件表,并向Layout返回一个列表。然后,我可以将此列表传递给LoginViewModel,以提供可供用户登录时选择的可用组件的列表。我的系统是如此,因此Account文件夹中没有视图,因此无法访问Account Controller在我的模态引导登录表单之前。
在实例化我的LoginViewModel之前,我需要设置listFromController值,如下所示。
public async Task<IList<SelectListItem>> GetComponents()
{
var query = _context.Components.AsQueryable();
return (await query.ToListAsync())
.Select(d => new SelectListItem { Text = d.Name, Value = d.Id.ToString() })
.ToList();
}
@await Html.PartialAsync(
"LoginModal",
new LoginViewModel { AvailableComponents = listFromController })
答案 0 :(得分:0)
我最终将该方法放置在Startup.cs中,并在Configure方法中使用诸如“ myComponents = GetComponents();”之类的方法设置list属性。在方法末尾。
private static IList<SelectListItem> GetComponents()
{
XDbContext _context = new XDbContext();
var query = _context.Components.AsQueryable();
return (query.ToList())
.Select(d => new SelectListItem { Text = d.Name, Value = d.Id.ToString() })
.ToList();
}
private static IList<SelectListItem> myComponents;
public static IList<SelectListItem> ComponentList
{
get
{
return myComponents;
}
}
在_Layout.cshtml顶部附近,添加了以下内容:
@{var listFromController = @Startup.ComponentList;}