2015-03-19 2 views
0

У меня есть выпадающий список, но я не могу получить, чтобы показать текущее состояние в представлении:DropDownListFor не показывает текущее значение MVC

Мой HTML:

<div class="form-group"> 
    @Html.LabelFor(model => parts.Status, new { @class = "col-md-4" }) 

    //This shows the status as "New - Dispatch" 
    @Html.TextBoxFor(model => parts.Status, new { @class = "col-md-8 required-color" }) 

    //This shows as empty , but i want it to show as New - Dispatch 
    @Html.DropDownListFor(model => parts.Status, parts.StatusList, String.Empty, new { @class = "col-md-8 required-color" }) 
</div> 

Я получаю мои данные здесь:

StatusList = _partsRequestHServices.GetStatusList(parts.PartRequestStatus) 

Это мой список:

public List<SelectListItem> GetStatusList(string PartRequestStatus) 
{ 
    List<SelectListItem> list = new System.Collections.Generic.List<SelectListItem>(); 
    list.Add(new SelectListItem() { Text = "New - Dispatch", Value = "New - Dispatch"}); 
    list.Add(new SelectListItem() { Text = "Exception - Warehouse", Value = "Exception - Warehouse"}); 
    list.Add(new SelectListItem() { Text = "HP Claim", Value = "HP Claim" }); 

    return list; 
} 

Я хочу показать текущий статус в представлении, который он работает в TextBoxFor, но не в DropDownListFor.

+0

Одно глупое предположение. Может быть, потому, что Selected = false? – Disappointed

+0

Можете ли вы опубликовать действие вашего контроллера, которое также передало модель в представление? – ataravati

+0

StatusList = _partsRequestHServices.GetStatusList (parts.PartRequestStatus) – ma32112345

ответ

0

Вам необходимо вернуть SelectList не общий List<SelectListItem>(). Возвращая этот список, вы можете установить значение выбранного элемента. Как это:

public List<SelectListItem> GetStatusList(string PartRequestStatus) 
{ 
    list.Add(new SelectListItem() { Text = "New - Dispatch", Value = "New - Dispatch", Selected = false }); 
    list.Add(new SelectListItem() { Text = "Exception - Warehouse", Value = "Exception - Warehouse", Selected = false }); 
    list.Add(new SelectListItem() { Text = "HP Claim", Value = "HP Claim", Selected = false }); 
} 

Тогда потребляют, что, как это:

var statuses = GetStatusList("??"); 
SelectList statusList = new SelectList(statuses , "Id", "Text", selectedValue); 
ViewData["Statuses"] = statusList; 

После того, как вы это установить, если вы используете пользовательский шаблон для выпадающего списка убедитесь, что ваш вид модели свойство для Status имеет этот атрибут:

[UIHint("string-name-of-editor-template")] 
+0

извините, я не думаю, что это сработает, что я не понимаю, это то, что он работает для моего текстового поля, но не DropDownListFor. – ma32112345

+0

Я обновлю свой ответ ... – Jammer

+0

Также я использую этот точный код на своем сайте MVC. Поверьте мне, это работает, я использую его ... – Jammer

0

Удалить Selected = false из ваших SelectListItem с (с помощью Selected = false, вы явно заявив, что вы не хотите, чтобы какой-либо из них был выбран):

public List<SelectListItem> GetStatusList(string PartRequestStatus) 
{ 
    List<SelectListItem> list = new System.Collections.Generic.List<SelectListItem>(); 
    list.Add(new SelectListItem() { Text = "New - Dispatch", Value = "New - Dispatch" }); 
    list.Add(new SelectListItem() { Text = "Exception - Warehouse", Value = "Exception - Warehouse" }); 
    list.Add(new SelectListItem() { Text = "HP Claim", Value = "HP Claim" }); 

    return list; 
} 
+0

Я избавился от Selected = false, но он все еще не показывает значение – ma32112345

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