【開発環境】visual studio2022 NET6.0
htmlヘルパーを使用してドロップダウンリストを作成しました。表示はできています。
Edit html <div class="form-group"> <label asp-for="ManufacturerCode" class="control-label"></label> <select id ="ManufacturerCode " asp-for="@Model.ManufacturerCode" asp-items="@context.MCodes.Where(m => m.Type.Contains("製造メーカ")).Select(s => new SelectListItem { Text = s.Name, Value =s.Code.ToString()})"class="form-control"> </select> <span asp-validation-for="ManufacturerCode" class="text-danger"></span> </div>
下画像はMCodeデータベースの一部です。ドロップダウンリストにnameを表示しています。
edit get public async Task<IActionResult> Edit(int? id) { if (id == null) { return NotFound(); } var mIngredient = await _context.MIngredients.FindAsync(id); if (mIngredient == null) { return NotFound(); } return View(mIngredient); }
public async Task<IActionResult> Edit(int id, [Bind("Id,IngredientsCode,IngredientsName,ClassCide,ManufacturerCode,WholesaleCode,Price,TempFlag,DeleteFlag,CreatedId,CreatedAt,UpdatedId,UpdatedAt")] MIngredient mIngredient) { if (id != mIngredient.Id) { return NotFound(); } if (ModelState.IsValid) { try { _context.Update(mIngredient); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MIngredientExists(mIngredient.Id)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } return View(mIngredient); }
【やりたいこと】
valueで受けっとたcodeを取得してnameをindex画面に表示したいです。
例えばメーカーAを選択したら、code0が格納され、indexにメーカーAが表示される
【試したこと】
valueもs.Nameにすれば表示できると思ったが、MnufacterCodeがint型のため、フォームでvalidエラーが返されてしまう。
当方mvcに疎いため何か必要箇所がありましたら教えてください。
Controllerはなにもいじっておらず、初めにスキャホールドしたままの状態です。
あなたの回答
tips
プレビュー