c# - 如何使用 ASP.NET Core Razor 页面预选下拉列表中的项目
问题描述
如果有帮助,我们正在使用 ASP.NET Core 2.1 和 Razor 页面(不是传统的 MVC)
我在选择工作时遇到问题。我们正在使用引入枚举的列表为我们的页面生成一个选项列表SelectListItem
,并将其放置在我们的 asp-items 中,效果非常好。对于我们的 asp-for,我们使用了一个递增的标签,因为有几个下拉菜单的循环。
<select asp-for="@Model.Answers[answerOptionIndex].AnswerText"
asp-items="@Model.CriticalIllnessTierSelectListItems"
class="form-control">
<option></option>
</select>
对于添加产品,这非常有用,asp-for 生成Answers[0].AnswerText
名称和Answers_0__AnswerText
ID,这非常棒。
问题是我们需要能够编辑现有表单,因此为了预先填充值,我发现您可以使用 asp-for,所以我输入了@answerTextForQuestion
for asp-for
,现在在页面加载时预先选择了正确的选项。 ..但随后它弄乱了我的ID和名称。
当我这样做时,我得到了这个:
<select name="answerTextForQuestion" class="form-control"
id="answerTextForQuestion">
奇怪的是它没有放值answerTextForQuestion
,它只是放了变量。
我尝试手动设置名称和 ID@Model.Answers[answerOptionIndex].AnswerText
并保留asp-for
as@answerTextForQuestion
但它忽略它并仍然 @answerTextForQuestion
输入问题和答案。
我不知道我的蛋糕怎么吃。我需要我的 asp-for,@Model.Answers[answerOptionIndex].AnswerText
但我也需要它来选择任何值@answerTextForQuestion
。因为我们正在使用SelectListItem
我不能只在正确的属性上抛出一个选定的属性。
我发现了一个堆栈溢出,它试图使用一个循环,如果选中的项目匹配,answerTextForQuestion
则使选中的属性为真,但这不起作用,我在评论中读到选中的是只读的,所以这不起作用。我将其加粗是因为我担心它会因为重复帖子而被否决。
编辑:一个更好的标题可能是我可以使用另一个属性来告诉浏览器应该在不使用 ASP-FOR 的情况下预先选择哪个选项。我们有很多围绕 ASP-FOR 使用的名称和 ID 构建的 AJAX,但我只需要这个函数。我查看了 C# 文档,但什么也没看到。
解决方案
对于下拉列表中的预选项目,您可以参考部分代码的简单示例,如下所示
1.在Edit.cshtml中
<div class="form-group">
<label asp-for="Movie.Genre" class="control-label"></label>
<select asp-for="Movie.Genre.Id" asp-items='(List<SelectListItem>)ViewData["Genres"]'></select>
</div>
2.在编辑.cshtml.cs
模型绑定
[BindProperty]
public Movie Movie { get; set; }
public Genre Genre { get; set; }
OnGetAsync()
Movie = await _context.Movie
.Include(m => m.Genre)
.SingleOrDefaultAsync(m => m.Id == id);
ViewData["Genres"] = _context.Genre.Select(g => new SelectListItem { Value = g.Id.ToString(), Text = g.Name }).ToList();
推荐阅读
- c++ - C++中的队列实现模板返回类型函数
- android - 使用变量作为名称 strings.xml
- webpack - Webpack -p 与 --mode=production
- sql-server - React 应用程序 - 无法连接到 SQL Server 数据库
- apache-kafka - 如果集群中有一个节点宕机,Zookeeper 将无法正常工作
- html - 侧边栏是否可以在 html 页面上的 div 之后启动
- php - 通过电子邮件发送时单选按钮无法正常工作
- reactjs - 将滚动条添加到反应提及中的提及列表
- javascript - 在javascript中获取Java异常类名
- java - atg Nucleus 中如何验证组件