似乎在ASP.NET Core2中,具有 Razor Pages (剃刀页)的选择/下拉列表中存在与零相关的文档。
我想创建一个下拉列表,用于从另一个表中选择/显示数据。
我怀疑每个“视图”(索引,详细信息,创建和编辑)很可能需要不同的实现? 例如: 索引和详细信息(仅用于查看)页面,需要读取该字段中的值,然后从参考表中获取该关联的文本。
那里有大量与MVC相关的信息,但是Razor页面没有ViewBag。
我尝试添加
var school = _context.AdmSchool.ToList(); SelectList selectList = new SelectList(学校,“ AdmSchoolId”,“ AdmSchoolName”,null); 学校= selectList;
在create.cshtml.cs(缺少剃须刀名称的“控制器”)文件中
和
@Html.DropDownList("school", null, null, htmlAttributes: new{@class="form-control", placeholder="Select School"});
进入Create.cshtml(视图)文件。
那么外面有人有Razor页面的经验吗? 我必须承认我是绝对的新手,因此您的答复越详细,我就越可能理解它。 谢谢
答案 0 :(得分:0)
您应该希望使用select tag helper in Razor Pages来代替MVC早期版本中的老式HTML帮助器。
asp-items
属性的数据应为List<SelectListItem>
:
var items = _context.AdmSchool.Select(s => new SelectListItem{
Value = s.AdmSchoolId.ToString(),
Text = s.AdmSchoolName
}).ToList();
您可以将其分配给PageModel(控制器)上的属性或ViewData(不是ViewBag):
ViewData["Items"] = items;
然后将其分配给asp-items属性:
<select asp-for="SelectedAdmSchoolId" asp-items="@((List<SelectListItem>)ViewData["Items"])"></select>
最后,向PageModel添加一个属性以捕获所选值:
[BindProperty]
public int SelectedAdmSchoolId {get; set;}