繁体   English   中英

在MVC3中的下拉列表中设置所选项目

[英]Set the selected item in dropdownlist in MVC3

我必须在视图中为下拉列表设置所选项目。 但它不起作用。

//视图

<div class="editor-label">
            @Html.LabelFor(model => model.Gender)
        </div>
        <div class="editor-field">
           @Html.DropDownListFor(model => model.Gender,Model.GenderList)
        </div>

//模型

[Required(ErrorMessage = "Please select gender!")]
        [Display(Name = "Gender")]
        public string Gender { get; set; }

  public IEnumerable<SelectListItem> GenderList
        {
            get
            {
                return new[]
            {
                new SelectListItem { Value = "0", Text = "Select" },
                new SelectListItem { Value = "1", Text = "Male" },
                new SelectListItem { Value = "2", Text = "Female" },
            };
            }
        }

性别属性的值需要在列表中选择。 还是行不通。

哪里我错了?

首先,创建ViewModel。

public class MovieViewModel
{
    public string Genre { get; set; }

    public IEnumerable<SelectListItem> GenreList
    {
        get
        {
            yield return new SelectListItem { Text = "Comedy", Value = "1" };
            yield return new SelectListItem { Text = "Drama", Value = "2" };
            yield return new SelectListItem { Text = "Documentary", Value = "3" };
        }
    }
}

然后,您的控制器创建此ViewModel的新实例并将其发送到视图。

public class HomeController : Controller
{
    //
    // GET: /Home/
    public ActionResult Index()
    {
        var viewModel = new MovieViewModel
        {
            Genre = "2"
        };

        return View(viewModel);
    }
}

最后,视图使用ASP.NET包装器[Html.DropDownListFor()] [1]显示下拉列表。

@model MvcApplication1.Models.MovieViewModel

<!DOCTYPE html>

<html>
<head>
    <title>My movie</title>
</head>
<body>
    <div>
        @Html.DropDownListFor(m => m.Genre, Model.GenreList)
    </div>
</body>
</html>

然后根据ViewModel自动选择所选值。 无需手动设置对象SelectListitemSelected属性。

SelectListItem类型具有Selected属性,对于要设置为选中的项,您需要为true

您可以静态设置它,如下所示:

public IEnumerable<SelectListItem> GenderList
    {
        get
        {
            [...]
            new SelectListItem { Value = "0", Text = "Select", Selected = true},
            [...]
        }
    }

或者在集合中枚举与Gender值匹配的内容:

var selected = GenderList.SingleOrDefault(item => item.Text.Equals(this.Gender));
if (selected != null)
    selected.Selected = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM