You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC中Razor视图下拉框绑定Agency列表报错求助

解决ASP.NET Core MVC下拉框类型转换错误问题

错误原因

Razor视图中asp-items属性要求绑定IEnumerable<SelectListItem>类型的集合,但你直接传入了Agency实体对象集合,两者类型不兼容导致转换错误。同时原视图模型和视图的asp-for绑定逻辑有误——下拉框需要绑定单个选中值(或多选的ID数组),而非整个代理列表。


解决方案

方法一:调整视图模型 + 控制器转换(推荐)

  1. 修改视图模型:添加存储选中值的属性,以及用于下拉框的SelectListItem集合:
public class CampaignViewModel
{
    // 存储选中的代理ID(单选场景)
    public int SelectedAgencyId { get; set; }
    
    // 下拉框选项集合
    public IEnumerable<SelectListItem> AgencyOptions { get; set; }
}
  1. 更新控制器代码:将Agency集合转换为SelectListItem集合,并返回视图模型(补上原代码遗漏的return View(model)):
[HttpGet]
public async Task<IActionResult> Create()
{
    var agencies = await _agenciesService.GetAgenciesAsync();
    var model = new CampaignViewModel 
    {
        AgencyOptions = agencies.Select(a => new SelectListItem
        {
            Value = a.AgencyId.ToString(), // 下拉框选项对应的值
            Text = a.Name // 下拉框显示的文本
        })
    };
    return View(model);
}
  1. 修改Razor视图:绑定正确的属性:
@model Lib.ViewModels.Campaigns.CampaignViewModel
<select asp-for="SelectedAgencyId" asp-items="Model.AgencyOptions" class="form-select">
    <option value="">请选择代理机构</option>
</select>

方法二:直接在视图中转换(快速临时方案)

如果不想修改视图模型,可直接在视图内将Agency集合转换为SelectListItem,但仍需在视图模型中添加选中值属性:

  1. 视图模型添加选中值属性:
public class CampaignViewModel
{
    public IList<Agency> Agencies { get; set; }
    // 添加选中值属性
    public int SelectedAgencyId { get; set; }
}
  1. 修改Razor视图:
@model Lib.ViewModels.Campaigns.CampaignViewModel
<select asp-for="SelectedAgencyId" 
        asp-items="@Model.Agencies.Select(a => new SelectListItem { Value = a.AgencyId.ToString(), Text = a.Name })" 
        class="form-select">
    <option value="">请选择代理机构</option>
</select>

关键注意事项

  • 若需要支持多选下拉框,可将SelectedAgencyId改为int[] SelectedAgencyIds,并在<select>标签添加multiple属性。
  • 原控制器代码遗漏了return View(model),必须补上才能将模型传递给视图。

内容的提问来源于stack exchange,提问作者Demian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:05:28