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)がないことです。すべて正常に機能しますが、DBに挿入するときに、「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についてはまだ詳しく説明したくありません。
現在のLINQクエリは単一の列をSELECTしMovieRating
ており、文字列のリストであるそのクエリを実行した結果を使用してSelectList
オブジェクトを構築しています。selectタグヘルパーはSelectList
、MovieRating文字列値のみを基になるアイテムとして持つこのオブジェクトを使用しています。
あなたと仮定すると、Ratings
クラスが持つId
プロパティ(int
タイプ)とMovieRating
プロパティ(string
タイプ)を、あなたが作成することもSelectListItem
、あなたのLINQの式の突起部に。
List<SelectListItem> ratingItems = _context.Ratings
.Select(a=>new SelectListItem
{
Value=a.Id.ToString(),
Text = a.MovieRating
}).ToList();
Ratings = ratingItems;
return Page();
これratingItems
がSelectListItem
オブジェクトのリストです。したがって、Ratings
プロパティタイプをSelectListItem
オブジェクトのコレクションに変更します。
public List<SelectListItem> Ratings { get; set; }
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加