ASP.Net View 中的 Core 2.1 MVC SelectList 未被填充
ASP.Net Core 2.1 MVC SelectList in View is not getting populated
我正在 ASPNet Core 2.1 MVC 网站上工作,我正在尝试获取一个 select 列表来填充公司列表(值 = Id,文本 = CompanyName)。我可以看到数据存在于 ViewModel 的列表中,但无论我尝试什么,我都无法让数据显示在视图的下拉列表中。
我正在关注
的 Select 列表推荐的第一个变体
这是我的 EditSite ViewModel class
public class EditSite
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 2)]
[Display(Name = "Site Name")]
public string SiteName { get; set; }
[Display(Name = "Enabled")]
public bool IsEnabled { get; set; }
public string ReturnUrl { get; set; }
public List<CompanySelect> CompanyList { get; set; }
}
这是我的公司Select moodel class
public class CompanySelect
{
public int Id { get; set; }
public string CompanyName { get; set; }
}
这是我在站点控制器中的编辑操作;
public async Task<IActionResult> Edit([FromQuery] int id, string returnUrl = null)
{
await SetCurrentUser();
ViewData["Role"] = _currentRole;
var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;
var response = await _client.GetSiteAsync(id, $"api/companies/{SetCompanyId()}/sites/{id}", token);
if (response == null)
{
return NotFound($"Unable to find a record for Company ID [{id}].");
}
var site = _mapper.Map<EditSite>(response.Site);
if (_currentRole != UserRoles.SysAdmin) return View(site);
site.CompanyList = await GetCompaniesForSelectList();
return View(site);
}
这是我调试时的截图,显示 site.CompanyList 填充了数据。
这是我视图中的Select
<div class="form-group">
<label asp-for="CompanyName"></label>
<select asp-for="Id" asp-item="@(new SelectList(Model.CompanyList, "Id","CompanyName"))" class="form-control">
<option>Please select a Company</option>
</select>
</div>
这是一张屏幕截图,显示视图模型此时已在视图中填充了数据。
这是我在网页上打开下拉列表时的截图,没有显示任何公司。
这看起来应该很简单。我在这里错过了什么?
<select asp-for="Id" asp-item="@(new SelectList(Model.CompanyList, "Id","CompanyName"))" ...>
select 标签助手的写法类似于 asp-item
,但它应该是 asp-items
。
select 标签助手 asp-for
为 select 元素指定模型 属性 名称,asp-items
指定选项元素。
在此处查看此文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-2.1
我正在 ASPNet Core 2.1 MVC 网站上工作,我正在尝试获取一个 select 列表来填充公司列表(值 = Id,文本 = CompanyName)。我可以看到数据存在于 ViewModel 的列表中,但无论我尝试什么,我都无法让数据显示在视图的下拉列表中。
我正在关注
这是我的 EditSite ViewModel class
public class EditSite
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 2)]
[Display(Name = "Site Name")]
public string SiteName { get; set; }
[Display(Name = "Enabled")]
public bool IsEnabled { get; set; }
public string ReturnUrl { get; set; }
public List<CompanySelect> CompanyList { get; set; }
}
这是我的公司Select moodel class
public class CompanySelect
{
public int Id { get; set; }
public string CompanyName { get; set; }
}
这是我在站点控制器中的编辑操作;
public async Task<IActionResult> Edit([FromQuery] int id, string returnUrl = null)
{
await SetCurrentUser();
ViewData["Role"] = _currentRole;
var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;
var response = await _client.GetSiteAsync(id, $"api/companies/{SetCompanyId()}/sites/{id}", token);
if (response == null)
{
return NotFound($"Unable to find a record for Company ID [{id}].");
}
var site = _mapper.Map<EditSite>(response.Site);
if (_currentRole != UserRoles.SysAdmin) return View(site);
site.CompanyList = await GetCompaniesForSelectList();
return View(site);
}
这是我调试时的截图,显示 site.CompanyList 填充了数据。
这是我视图中的Select
<div class="form-group">
<label asp-for="CompanyName"></label>
<select asp-for="Id" asp-item="@(new SelectList(Model.CompanyList, "Id","CompanyName"))" class="form-control">
<option>Please select a Company</option>
</select>
</div>
这是一张屏幕截图,显示视图模型此时已在视图中填充了数据。
这是我在网页上打开下拉列表时的截图,没有显示任何公司。
这看起来应该很简单。我在这里错过了什么?
<select asp-for="Id" asp-item="@(new SelectList(Model.CompanyList, "Id","CompanyName"))" ...>
select 标签助手的写法类似于 asp-item
,但它应该是 asp-items
。
select 标签助手 asp-for
为 select 元素指定模型 属性 名称,asp-items
指定选项元素。
在此处查看此文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-2.1