【发布时间】:2018-11-23 03:37:02
【问题描述】:
Razor、c# 和 ASP 的新手,并参考以下内容。 https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/?view=aspnetcore-2.1
目前,我可以使用 Pages 代码中的以下代码将模型中的行排列到选择视图中。
public SelectList Ratings { get; set; }
public async Task<IActionResult> OnGetAsync()
{
IQueryable<string> ratingQuery = from m in _context.Ratings
orderby m.MovieRating
select m.MovieRating;
Ratings = new SelectList(await ratingQuery.Distinct().ToListAsync());
return Page();
}
在我的 HTML 页面参考中,可以生成一个不错的评分列表供您选择。
<select asp-for="Movie.Rating" asp-items="Model.Ratings">
</select>
我的问题是生成的选项除了 Movie.Rating 字段(即 GOOD、BAD、UGLY)之外没有其他值,一切正常,但是当我插入数据库时,我想插入“ID " 而不是 "MovieRating"
我希望在生成页面时创建以下 html。其中表中的 ID 字段是值,“MovieRating”是文本。
<select asp-for="Movie.Rating" asp-items="Model.Ratings">
<option value="1">Good</option>
<option value="2">Bad</option>
<option value="3">Ugly</option>
</select>
为了做到这一点,我知道我需要选择的不仅仅是 select 语句中的“MovieRating”字段。所以我可以将其更改为也选择 ID。但是,它只会将组合字符串吐出到选项字段中,而不会产生值字段。
这是实现我想要做的正确方法吗?我可以在网上找到一些如何以另一种方式实现这一目标的示例,但我还不想深入研究 MVC。
【问题讨论】:
-
更改您的查询以获取名称和 id:
var ratingQuery = ...select new { m.MovieRating, m.MovieId }并学习如何从中创建 SelectList。网上有很多例子。
标签: c# visual-studio linq razor