DropDownListFor,selected = true不起作用 [英] DropDownListFor, selected = true doesn't work

查看:247
本文介绍了DropDownListFor,selected = true不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

选择不适用于DropDownListFor.谁能帮我吗?

Select doesn't work for me with DropDownListFor. Can anyone help me?

我有属于一个音乐类别的音乐类别和艺术家.在我的页面上,我想显示艺术家的详细信息,并且我希望下拉列表加载所有选定了指定艺术家音乐类别的音乐类别.但是我无法在下拉列表中选择一个指定的选项,始终总是首先选择第一个选项.

I have musiccategories and artists that belong to one musiccategory. On my page I want to show artist details, and I want the dropdownlist to load all musiccategories with the specified artists music category selected. But I can't make one specified option in the drop down list selected, the first option is always selected at first.

我的控制器:

public ActionResult Index()
{
      ClassLibrary.Artist a = GetArtist();
      System.Collections.Generic.List<System.Web.Mvc.SelectListItem> items = getGenres();
      string genre = a.MusicCategory;
      foreach (SelectListItem sli in items)
      {
          if (sli.Text == genre)
          {
              sli.Selected = true;
          }
      }
      ViewBag.MusicCategory = items;
      return View(a);
}

我的第一个模型:

public class MusicCategory
{
    public int MusicCategoryID { get; set; }
    public string MusicCategoryName { get; set; }
}

我的secound模型:

My secound model:

public class Artist
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string Description { get; set; }
        public string MusicCategory { get; set; }
        public int MusicCategoryID { get; set; }
        public int Contact { get; set; }
        public string InformationToCrew { get; set; }
        public string Agreement { get; set; }
        public string WantedStage { get; set; }
        public string AgreementAccepted { get; set; }
        public string PublishingStatus { get; set; }
        public string ApplicationStatus { get; set; }
        public int? ActiveFestival { get; set; }
        public string ImageURL { get; set; }
        public string URL { get; set; }
        public string FacebookEvent { get; set; }
        public int Score { get; set; }
        public List<GroupMember> GroupMembers { get; set; }
    }

我的观点:

@Html.DropDownListFor(model => model.MusicCategory, (System.Collections.Generic.List<System.Web.Mvc.SelectListItem>)ViewBag.MusicCategory)

推荐答案

DropDownListFor,selected = true不起作用

DropDownListFor, selected = true doesn't work

是的.

但是我不能在下拉列表中选择一个指定的选项,始终总是首先选择第一个选项.

But I can't make one specified option in the drop down list selected, the first option is always selected at first.

使用时

// I don't recommend using the variable `model` for the lambda
Html.DropDownListFor(m => m.<MyId>, <IEnumerable<SelectListItem>> ...

MVC忽略.selected,而是对照<IEnumerable<SelectListItem>>中的值验证m.<MyId>值.

MVC Ignores .selected and instead verifies the m.<MyId> value against the values in <IEnumerable<SelectListItem>>.

public class DropDownModel
{
    public int ID3 {  get; set; }
    public int ID4 { get; set; }
    public int ID5 { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

public ActionResult Index()
{
    var model = new DropDownModel
    {
        ID3 = 3,  // Third
        ID4 = 4,  // Second
        ID5 = 5,  // There is no "5" so defaults to "First"
        Items = new List<SelectListItem>
        {
            new SelectListItem { Text = "First (Default)", Value = "1" },
            new SelectListItem { Text = "Second (Selected)", Value = "2", Selected = true },
            new SelectListItem { Text = "Third", Value = "3" },
            new SelectListItem { Text = "Forth", Value = "4" },
        }
    };
    return View(model);
}

<div>@Html.DropDownListFor(m => m.ID3, Model.Items)</div>
<div>@Html.DropDownListFor(m => m.ID4, Model.Items)</div>
<div>@Html.DropDownListFor(m => m.ID5, Model.Items)</div>

结果:

dotnetfiddle.net示例

这篇关于DropDownListFor,selected = true不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆