2016-06-21 4 views
-1

Добрый деньВыберите выпадающий элемент в контроллере

На мой взгляд, у меня есть DropDownList так:

<div class="form-group row"> 
    @Html.LabelFor(model => model.Colour, new { @class = "col-lg-2 col-md-2 col-sm-2 col-xs-2" }) 
    <div class="col-lg-9 col-md-9 col-sm-9 col-xs-9"> 
     @Html.DropDownListFor(model => model.Colour, new SelectList(Model.VehicleColour, "Value", "Text", Model.Colour), new { id = "Colour", @class = "btn dropdown-toggle btn-default" }) 
    </div> 
</div> 

Обновлено. В определенном состоянии мне нужно установить выбранный элемент в моем контроллере. В настоящее время я пытаюсь добиться этого, делая это как так (но это не работает):

[HttpPost] 
public ActionResult VehicleDetails(VehicleDisplay model) 
{ 
    // This section depends on the condition and it gets the item id that I need 
    // to select in the dropdown 
    if (Session["ColourID"] != null) 
    { 
     model.Colour = long.Parse(Session["ColourID"].ToString()); 
    } 
    #endIf 

    model.VehicleColour = GetVehicleColour(); 
    foreach (SelectListItem colour in model.VehicleColour) 
    { 
     if (colour.Value == model.Colour.ToString()) 
     { 
      colour.Selected = true; 
     } 
     else 
     { 
      colour.Selected = false; 
     } 
    } 
    return PartialView("VehicleDetails", model); 
} 

GetVehicleColour()

private IEnumerable<SelectListItem> GetVehicleColour() 
{ 
    var colours = new List<SelectListItem>(); 
    var colour = new SelectListItem() 
    { 
     Value = "0", 
     Text = "Please select a Vehicle Colour", 
     Selected = true 
    }; 

    /* Get Colour values fron database */ 

    foreach (ColorObject method in dbList) 
    { 
     colour = new SelectListItem() 
     { 
      Value = method.Id.ToString(), 
      Text = method.Description, 
      Selected = false 
     }; 
     colours.Add(colour); 
    } 
    return colours; 
} 

VehicleModel

[Required] 
[Display(Name = "Colour ")] 
[Range(1, long.MaxValue, ErrorMessage = "Please select a Vehicle Colour")] 
public long? Colour { get; set; } 

public IEnumerable<SelectListItem> VehicleColour { get; set; } 

может пожалуйста, помогите мне с этим вопросом?

+0

Там нет установки 'Selected' свойство' SelectListItem' при привязке к модели собственности точка (ее игнорируется 'DropDownListFor()' метода, который внутренне генерирует новый 'IEnumerable '). Его значение «Colour», которое определяет, что выбрано, если оно соответствует одному из значений vales, то этот параметр будет выбран. –

+0

И не добавляйте опцию 'Пожалуйста, выберите« Colour Colour »в' SelectList' - используйте одну из перегрузок, которые принимают «labelOption», и нет точки, генерирующей второй идентичный 'SelectList' из первого. Представление должно быть просто '@ Html.DropDownListFor (m => m.Colour, Model.VehicleColour,« Выберите цвет транспортного средства », новый {@class =" btn dropdown-toggle btn-default "})' –

+0

У меня есть удалил свойство «Selected», но он все еще не выбирает выбранное значение – ArnoDT

ответ

0

Вы можете попробовать это;

В контроллере вы должны написать;

List<VehicleColour> lstColour = null; 
lstColour = GetVehicleColour(); 
ViewBag.lstColour = new SelectList(lstColour , "Colour", "Colour", selected Colour); 

И ваш взгляд должен быть как внизу;

@Html.DropDownList("lstColour", null, new { id = "Colour", @class = "btn dropdown-toggle btn-default" }) 
+0

Кто на самом деле проголосовал за этот совершенно неправильный ответ –

+0

@StephenMuecke это работает нормально. Я использовал это во многих своих проектах. Таким образом, plz не судит чей-либо код без подтверждения. И, очевидно, кто голосовал, также получает решение, поэтому он проголосовал. –

+0

Если у вас есть ответ, напишите здесь. Не комментируйте чей-то ответ. –

Смежные вопросы