質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

2回答

3957閲覧

C# 配列データをHTML<select>へどうやって渡せるか教えて頂きたいです。

yabutanitake

総合スコア13

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2019/01/28 06:03

編集2019/01/28 06:06

前提・実現したいこと

部品管理システムを開発しており、
部品の分類を行うためのNoを割り振る機能を作成したいと考えています。
各Noに一文字のみで1~9、A-Zまで割り振れるようにする仕様で、
既に使用している文字は新しく分類を登録するときに選択する文字から除去したもので選択したい。

配列で既存で登録されているものを除去した配列が渡っているのは確認できたのですが、
HTMLの<select>へデータを渡す部分がうまくいかないです。
どなたかお助け頂けませんでしょうか。

発生している問題・エラーメッセージ

エラーのアラートは特になし HTMLで配列値が読み込まれず、<select></select>内で値がなく、選択できない。

該当のソースコード

C#

1 public SelectList ProcID { get; set; } 2 3public IActionResult OnGet() 4 { 5 var dbList = _context.ProcNameR.Select(i => i.ProcNameRID).ToList(); 6 var tempList = new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; 7 8 SelectList procList = new SelectList(tempList.Except(dbList)); 9 10 ProcID = procList; 11 12 return Page(); 13 }

該当のソースコード

HTML

1@page 2@model prototype1.Pages.Masters.Proc.CreateModel 3 4@{ 5 ViewData["Title"] = "Create"; 6} 7 8<h1>Create</h1> 9 10<h4>ProcNameR</h4> 11<hr /> 12<div class="row"> 13 <div class="col-md-4"> 14 <form method="post"> 15 <div asp-validation-summary="ModelOnly" class="text-danger"></div> 16 <div class="form-group"> 17 <label asp-for="ProcNameR.ProcNameRID" class="control-label"></label> 18 <select asp-for="ProcNameR.ProcNameRID" class="form-control" asp-items="Model.ProcID" /> 19 </div> 20 21 <div class="form-group"> 22 <label asp-for="ProcNameR.ProcName" class="control-label"></label> 23 <input asp-for="ProcNameR.ProcName" class="form-control" /> 24 <span asp-validation-for="ProcNameR.ProcName" class="text-danger"></span> 25 </div> 26 <div class="form-group"> 27 <input type="submit" value="Create" class="btn btn-primary" /> 28 </div> 29 </form> 30 </div> 31</div> 32 33<div> 34 <a asp-page="Index">Back to List</a> 35</div> 36 37@section Scripts { 38 @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} 39}

試したこと

ProcID = tempList.Except(dbList) で直接データを入力したが効果なし

補足情報(FW/ツールのバージョンなど)

visual stadio 2017
ASP.NET CORE 2.2
Local SQL Server

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/01/28 08:43

CORE は必須ですか? (多分そうだろうと思いながらも聞いてます。.NET なら答えられると思うので)
yabutanitake

2019/01/28 10:22

必須ではないのですが、今後のためにCORE縛りで開発しています。 後学の為にASP.NETでの解決法を教えて頂けると幸いです。
退会済みユーザー

退会済みユーザー

2019/01/28 22:27 編集

.NET ですと ViewBag を使って、生成した SelectList オブジェクトを View に渡し、Html ヘルパーの DropDownList または DropDownListFor の引数に渡すいう感じです。具体例は以下のスレッドを見てください。 https://teratail.com/questions/161680
guest

回答2

0

ベストアンサー

selectのタグヘルパーはself-closingな書き方はできず、下記のように記述する必要があるようです。

//これはNG <select asp-for="ProcNameR.ProcNameRID" class="form-control" asp-items="Model.ProcID" /> //これはOK <select asp-for="ProcNameR.ProcNameRID" class="form-control" asp-items="Model.ProcID"></select>

Githubにも同様のIssueがいくつかありますが、これは現状の仕様のようです。
https://github.com/aspnet/AspNetCore/issues/1302

投稿2019/01/28 14:55

evin101

総合スコア92

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yabutanitake

2019/01/29 04:08

ありがとうございます。 理解できました。
guest

0

無理やりですが、OPTIONにforeachでの書き込みでうまいこと処理が走りました。


<select asp-for="ProcNameR.ProcNameRID" class="form-control" asp-items="Model.ProcID" />
@foreach (var items in Model.ProcID) { string stg = items.Text; <option value=@stg>@stg</option> }
<select /> ******************************************

何か他の方法などで処理できる方法などございましたらご教授頂けると幸いです。

投稿2019/01/28 10:35

yabutanitake

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問