1

私のコントローラクラス;

次の例ではreturnAllHuman();List<SelectListItem>

public ActionResult Index()
    {
        var list = returnAllHuman(); // List<SelectListItem>

        ViewData["all_Human"] = list;
        return View();

    }

ビューで

 @Html.DropDownList("all_Human")

1.) 値が表示されない

2.) 選択した値を取得して、テキスト フィールドに表示する必要があります。これどうやってするの ?

更新:以下のコードから例外処理部分を削除しました

  public List<SelectListItem> returnAllHuman()
    {
        var i = new List<SelectListItem>();


            using (SqlCommand com = new SqlCommand("SELECT * FROM Names", con))
            {
                con.Open();
                SqlDataReader s = com.ExecuteReader();


                while (s.Read())
                {
                    i.Add(new SelectListItem
                    {
                        Value = s.GetString(0), 
                        Text = s.GetString(1)  
                    });
                }

                           con.Close();



        return i;
    }
4

1 に答える 1

3

ビューモデルを定義することから始めます。

public class MyViewModel
{
    [Required]
    public string SelectedHuman { get; set; }
    public IEnumerable<SelectListItem> AllHumans { get; set; }
}

次に、コントローラーにこのモデルを入力させ、ビューに渡します。

public class HomeController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel();
        model.AllHumans = returnAllHuman(); // List<SelectListItem>
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        if (!ModelState.IsValid)
        {
            // there was a validation error => for example the user didn't make
            // any selection => rebind the AllHumans property and redisplay the view
            model.AllHumans = returnAllHuman();
            return View(model);
        }

        // at this stage we know that the model is valid and model.SelectedHuman
        // will contain the selected value
        // => we could do some processing here with it
        return Content(string.Format("Thanks for selecting: {0}", model.SelectedHuman));
    }
}

次に、強く型付けされたビューで:

@model MyViewModel
@using (Html.BeginForm())
{
    @Html.DropDownListFor(x => x.SelectedHuman, Model.AllHumans, "-- Select --")
    @Html.ValidationFor(x => x.SelectedHuman)
    <button type="submit">OK</button>
}
于 2013-02-18T23:04:54.173 に答える