情報応用演習Ⅰ(2024)

課題07(5/5)

注意
  • 以下の設問はリアクションペーパーに「課題07」という節を設けて, 課題名の見出しを付けて 回答すること.
    • これらはすべて課題点として成績に算入される課題である

【課題7-05】「多」側の入力

【課題7-04】のウェブアプリには,新たな「車種」を登録するための アクションとして,HogeというコントローラーにCreateというアクションがあると仮定する. このCreateアクション(GET用)は入力フォームを表示するためのアクションで, _に示すような処理が含まれている ( フォームからの送信を受け付けるアクションは別に定義されている ).

HogeコントローラーのCreateアクション(GET用)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// (usingディレクティブなどは省略)
namespace SomeApp.Controllers 
{
    public class HogeController : Controller
    {
        private readonly SomeAppContext _context; // データコンテキストクラス
        
        // ..略..
        
        // Createアクション(GET用)
        public IActionResult Create()
        {
            ViewBag.Xyzzy = (from c in _context.Manufacturers
                             orderby d.Id ascending
                             select new SelectListItem() { Value = d.Id.ToString(), Text = d.CorporateName }).ToList();
                              
            return View(new CarLine());
        }
    
        // ..略..
        
    }// end of class HogeController 
    
}// end of namespace

SomeAppContextクラスはこのアプリのデータコンテキストクラスであり,また13行目でアクセスしている .Manufacturersプロパティは「メーカー」のエンティティに対応するプロパティである.

このアクションに対応するビューは_のようになっている.「メーカー」は ドロップダウンリストで入力させるという前提である.空欄に適切なコードを回答せよ.

Views/Hoge/Create.cshtmlの内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@{
    ViewData["Title"] = "新規車種の登録";
  
    if (Model is null) throw new ArgumentNullException(nameof(Model)); // ad-hoc! 非null保証のための回避策
}
  
@model CarLine

<form asp-action="Create">
    @* 名前のための入力欄 *@
    <label asp-for="@Model.Name"></label>:
    <input asp-for="@Model.Name" />
    <span asp-validation-for="@Model.Name"></span>
    <br />
  
    @* メーカーのための入力欄 *@
    <label asp-for="@Model./******** 空欄1 ********/"></label>
    <select /******** 空欄2 ********/"></select>
    <span asp-validation-for="@Model./******** 空欄1 ********/"></span>
    <br />
  
    @* ..中略.. *@

    <input type="submit" value="送信" />
</form>
  
<a asp-action="Index">一覧に戻る</a>
  
@section Scripts
{
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
Last updated on 2024-06-10
Published on 2024-06-10

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.