【问题标题】:How to use IEnumerable in form razor page如何在表单剃须刀页面中使用 IEnumerable
【发布时间】:2021-10-22 13:28:43
【问题描述】:

我有一个用于在 razor 页面中创建页面以填写组织详细信息的表单。 该组织有一个字段 ParentId(它可能属于另一个组织)。 我想在 Select 中迭代 parentIds 列表(并在选项中显示标题)。 我收到此错误:以下示例生成 CS1579,因为 MyCollection 类不包含公共 GetEnumerator 方法

//Model
public class Organisation : EntityBase
    {
        [Key]
        public int Id { get; set; }

        public Organisation Parent { get; set; }

        [Required]
        public string Title { get; set; }
}

//Controller
public IActionResult Create()
        {
            IEnumerable<Organisation> objList = _db.Organisations;
            return View(objList);
        }

//View

        @model MindNavigatorDB.Entities.Organisation;
        <form asp-action="Create" method="post">
        <div class="form-group">
       <label asp-for="Parent" class="control-label"></label>
           <select id="country"
                class="form-select form-control"
                asp-for="Parent"
                aria-label="Select">
                @foreach (Organisation item in Model)
                {
                   <option selected="selected" value="">Please select</option>
                }
                                
            </select>
            <span asp-validation-for="Parent" class="text-danger"></span>
          </div>                 
        </form>

【问题讨论】:

  • 发布的代码似乎不包含名为 MyCollection 的类

标签: c# .net asp.net-core razor razor-pages


【解决方案1】:

您必须将 ParentId 添加到 Orgainzation

public class Organisation : EntityBase
    {
        [Key]
        public int Id { get; set; }

        public int? ParentId { get; set; }
        public virtual Organisation Parent { get; set; }

        [Required]
        public string Title { get; set; }
}

创建视图模型

public class OrganizationViewModel
{
    public Organization {get; set;}
    public  List<SelectListItem>     ParentSelectList  {get; set;}
}

动作

public IActionResult Create()
{
   var viewModel= new OrganizationViewModel
  {
     Organization=new Organization(),
      ParentSelectList = _db.Organisations.Select( i=> new SelectListItem
       { 
        Value=i.Id.ToString(),
       Text=i.Title
       }).ToList()                                         
   }
    return View(viewModel);
}

查看

 @model OrganisationViewModel;

<form asp-action="Create" method="post">
 <div class="form-group">
<label  class="control-label"> Parent </label>
 <select class="form-control" asp-for="@Model.Organization.ParentId" asp-items="@Model.ParentSelectList" ></select>
 <span asp-validation-for="@Model.Organization.ParentId" class="text-danger"></span>
 </div>                 
 </form>

【讨论】:

    猜你喜欢
    • 2020-04-15
    • 2022-01-16
    • 1970-01-01
    • 2020-11-11
    • 2020-11-06
    • 2020-05-13
    • 2021-10-27
    • 2020-09-21
    • 2021-10-11
    相关资源
    最近更新 更多