トッカンソフトウェア

ASP.NET MVC HTML ヘルパー③

今回はDropDownListFor、ListBoxFor、EnumDropDownListFor、CheckBoxFor、RadioButtonFor、HiddenForをやります。
Forなしは省略しますが、Forを抜くこともできます。Forあり/なしについてはヘルパー①を参照してください。

DropDownListFor、ListBoxFor、EnumDropDownListFor

選択リストを表示します。リストの候補値は別途定義しヘルパーに渡す必要があります。
ヘルパー 説明
DropDownListFor 単数選択のコンボボックス。
ListBoxFor 複数選択リスト。モデルを配列にします。
EnumDropDownListFor Enumを候補値に使うコンボボックス。

CheckBoxFor、RadioButtonFor

チェックボックスとラジオボタンを表示します。チェックボックスはモデルをブーリアン型にします。
チェックボックスはチェックボックスグループを作って複数選択する場合、標準のHTMLヘルパーにないので別途HTMLヘルパーを作成する必要があります

HiddenFor

Hidden項目を裏で持ちます。
ビュー(HelloView.cshtml)
				
@model HelloWorld.Models.Hello

@{
    ViewBag.Title = "HelloView";
}

@using (Html.BeginForm())
{
    <h3>DropDownList</h3>
    @Html.DropDownListFor(
      model => model.Str1,
      (IEnumerable<SelectListItem>)ViewBag.SelectList,
      " 選択してください "
    )

    <h3>ListBox</h3>
    @Html.ListBoxFor(
      model => model.Str2,
      (IEnumerable<SelectListItem>)ViewBag.SelectList
    )
    
    <h3>EnumDropDownList</h3>
    @Html.EnumDropDownListFor(model => model.Str3)

    <h3>CheckBox</h3>
    @Html.CheckBoxFor(
      model => model.Boo
    )
    <label>Check</label>

    <h3>RadioButton</h3>
    @Html.RadioButtonFor(
      model => model.Str4,
      "RadioButton1"
    )
    <label>Radio1</label>
    @Html.RadioButtonFor(
      model => model.Str4,
      "RadioButton2"
    )
    <label>Radio2</label>

    <h3>Hidden</h3>
    @Html.HiddenFor(
      model => model.Str5
    )

    <input type="submit" />
}


			
コントローラ(HelloController.cs)
				

using HelloWorld.Models;
using System.Web.Mvc;

namespace HelloWorld.Controllers
{
    public class HelloController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult HelloView()
        {
            Hello hl = new Hello();

            ViewBag.SelectList = new SelectListItem[] {
                new SelectListItem() { Value="001", Text="選択①" },
                new SelectListItem() { Value="002", Text="選択②" },
                new SelectListItem() { Value="003", Text="選択③" }
            };

            return View(hl);
        }

        [HttpPost]
        public ActionResult HelloView(Hello hl)
        {

            ViewBag.SelectList = new SelectListItem[] {
                new SelectListItem() { Value="001", Text="選択①" },
                new SelectListItem() { Value="002", Text="選択②" },
                new SelectListItem() { Value="003", Text="選択③" }
            };
            return View(hl);
        }
    }
}

			
モデル(Hello.cs)
				
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace HelloWorld.Models
{
    public class Hello
    {
        public string Str1 { get; set; }

        public string[] Str2 { get; set; }

        public bool Boo { get; set; }

        public EnumList Str3 { get; set; }
        public string Str4 { get; set; }
        public string Str5 { get; set; }
    }

    public enum EnumList
    {
        [Display(Name = "選択①")]
        Cd1,

        [Display(Name = "選択②")]
        Cd2,

        [Display(Name = "選択③")]
        Cd3
    }
}

			
フォルダ構成は以下になります。


以下にアクセスします。
				
http://localhost:55172/Hello/HelloView


			

初期表示時






ページのトップへ戻る