C# 如何使用ASP.NET Core Razor页面在下拉列表中预选项目
如果有帮助,我们将使用ASP.NET Core 2.1和Razor页面(不是传统的MVC) 我在选择工作时遇到问题。我们正在使用C# 如何使用ASP.NET Core Razor页面在下拉列表中预选项目,c#,asp.net-core,.net-core,razor-pages,C#,Asp.net Core,.net Core,Razor Pages,如果有帮助,我们将使用ASP.NET Core 2.1和Razor页面(不是传统的MVC) 我在选择工作时遇到问题。我们正在使用SelectListItem列表为页面生成一个选项列表,该列表引入了枚举,并将其放置在asp项目中,效果非常好。对于我们的asp For,我们使用的标签是递增的,因为有一些下拉列表循环 <select asp-for="@Model.Answers[answerOptionIndex].AnswerText" asp-items="@Model.
SelectListItem
列表为页面生成一个选项列表,该列表引入了枚举,并将其放置在asp项目中,效果非常好。对于我们的asp For,我们使用的标签是递增的,因为有一些下拉列表循环
<select asp-for="@Model.Answers[answerOptionIndex].AnswerText"
asp-items="@Model.CriticalIllnessTierSelectListItems"
class="form-control">
<option></option>
</select>
奇怪的是,它并没有把值answerTextForQuestion
放进去,它只是把变量放进去
我试图手动将name和ID设置为@Model.Answers[answerOptionIndex].AnswerText
,并将asp for
保留为@answerTextForQuestion
,但它忽略了它,仍然将@answerTextForQuestion
作为问答
我不知道我的蛋糕是怎么吃的。我需要我的asp作为@模型。答案[answerOptionIndex]。AnswerText
,但我还需要它来选择@answerTextForQuestion
中的值。因为我们使用的是SelectListItem
,所以我不能只在右边抛出一个选中的属性
我发现一个堆栈溢出,它试图使用一个循环,如果选定的answerTextForQuestion
中的项目匹配,则将选定的属性设置为true,但这不起作用,并且我在注释中读取到选定的是只读的,所以这是行不通的。我之所以加粗,是因为我担心这篇文章会因为重复发表而被否决
编辑:一个更好的标题可能是,是否有另一个属性我可以用来告诉浏览器应该预选哪个选项而不使用ASP-FOR。我们有很多AJAX都是围绕ASP-FOR使用的名称和ID构建的,但我只需要这一个函数。我查看了C#文档,但没有看到任何内容。要在dropdownlist中预选一个项目,您可以参考部分代码以获得如下所示的简单示例 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>
OnGetAsync()
我不确定这有什么帮助。它没有预选任何选项。也许我没有抓住要点,但是你不能把你想要预选的值放在选项标签里吗?(即@answerTextForQuestion)
<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>
[BindProperty]
public Movie Movie { get; set; }
public Genre Genre { get; set; }
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();