如何在表单剃须刀页面中使用 IEnumerable
Posted
技术标签:
【中文标题】如何在表单剃须刀页面中使用 IEnumerable【英文标题】:How to use IEnumerable in form razor page 【发布时间】: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 的类 【参考方案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>
【讨论】:
以上是关于如何在表单剃须刀页面中使用 IEnumerable的主要内容,如果未能解决你的问题,请参考以下文章