Как правильно установить выбранный элемент в SelectListItem?

Я создал новый SelectListItem. Я могу заполнить параметры, но это не позволит мне установить выбранный элемент:

Значения модели

Model.Clients.ClientId = 1
Model.Clients.Name = "Company 1"
Model.Clients.ClientId = 2
Model.Clients.Name = "Company 2"
Model.Clients.ClientId = 3
Model.Clients.Name = "Company 3"
Model.Clients.ClientId = 4
Model.Clients.Name = "Company 4"
Model.Clients.ClientId = 5
Model.Clients.Name = "Company 5"

Model.User.Client.ClientId = 3

DropDownListFor

@Html.DropDownListFor(model => model.User.Client, Model.Clients.Select(x => new SelectListItem
{
    Text = x.Name,
    Value = x.ClientId.ToString(),
    Selected = x.ClientId == Model.User.Client.ClientId
    }).ToList(),
    new { @class = "form-control" }
)

Выпадающий список HTML

<select class="form-control" id="User_Client" name="User.Client">
    <option value="1">Company 1</option>
    <option value="2">Company 2</option>
    <option value="3">Company 3</option>
    <option value="4">Company 4</option>
    <option value="5">Company 5</option>
</select>

Мой код должен сделать вариант 3 выбранным, но это не так.


person CIA    schedule 25.12.2013    source источник


Ответы (2)


Попробуйте код ниже:

@Html.DropDownListFor(model => model.User.Client.ClientId, 
new SelectList(Model.Clients,"ClientId","Name", Model.User.Client.ClientId), 
new { @class = "form-control" })

Примечание: вы не можете привязать класс Client для DropDownList, вам нужно использовать свойство, подобное ClientId.

Лучше добавить еще одну недвижимость для выбранного клиента. как показано ниже:

public class yourModel
{
   public int selectedClientId {get;set;}
   //
}

    @Html.DropDownListFor(model => model.selectedClientId, 
    new SelectList(Model.Clients,"ClientId","Name", Model.User.Client.ClientId), 
    new { @class = "form-control" })
person Lin    schedule 25.12.2013
comment
Хорошая уловка по теме Class vs Property. Я изменил раскрывающийся список перечислителя с Model.User.Client на Model.User.Client.ClientId, и это решило мою проблему. - person CIA; 26.12.2013

попробуйте следующее

 @Html.DropDownListFor(model  => model.User.Client,
 new SelectList(Model.Clients.ToList(), "ClientId", "Name", Model.User.Client.ClientId))
person Ankush Jain    schedule 25.12.2013