Как показать выбранное значение в DropDownList MVC

Ниже мой DropDownList в поле зрения

<div class="col-xs-8 col-sm-8 col-md-4">                           
 @Html.DropDownList("Status",new List<SelectListItem> { new SelectListItem{ Text="Active", Value = "Active" },new SelectListItem{ Text="InActive", Value = "InActive" }}, new { @class = "form-control" })
</div> 

Из значения БД приходит либо «Активный», либо «Неактивный», и в раскрывающемся списке уже есть эти два значения. И из моей БД я присваиваю значение в ViewBag.IsStatus. Теперь предположим, что мое значение приходит «InAactive» из БД, тогда как назначить его как выбранное значение в раскрывающемся списке, а не отображать первое раскрывающееся меню по умолчанию как выбранное.


person Steve    schedule 20.04.2016    source источник
comment
Значения ваших параметров — 0 и 1 (а не "Active" и "Inactive"), поэтому, если значение свойства Status равно 1, будет выбран второй вариант.   -  person    schedule 20.04.2016
comment
Проверьте этот ответ stackoverflow.com/a/6807331/3074022   -  person Sousuke    schedule 20.04.2016
comment
@StephenMuecke хорошо, я изменил свое значение так же, как и у Text. но до сих пор не получил желаемого результата.   -  person Steve    schedule 20.04.2016
comment
У вас есть свойство модели с именем Status? Вы всегда должны использовать строго типизированные методы HtmlHelper (@Html.DropDownListFor(m => m.Status, .....))   -  person    schedule 20.04.2016
comment
@Sousuke, я привязываю свой раскрывающийся список на стороне просмотра, у которого есть только два варианта.   -  person Steve    schedule 20.04.2016


Ответы (2)


Лучше использовать DropDownListFor, если вы используете MVC. Но для вашего случая просто создайте SelectList и передайте его DropDownList. SelectList конструктор имеет перегрузку для выбранного значения:

@{ //theese lines actually should be in controller.
 var list = new List<SelectListItem> 
             { 
             new SelectListItem 
                   { 
                       Text="Active", 
                       Value = "0" 
                   }
             ,new SelectListItem
                   { 
                       Text="InActive", 
                       Value = "1" 
                    }
             }
}

//thats your code
<div class="col-xs-8 col-sm-8 col-md-4">                           
   @Html.DropDownList("Status",new SelectList(list, "Value", "Text", ViewBag.IsStatus), new { @class = "form-control" })
</div> 
person teo van kot    schedule 20.04.2016
comment
я переместил 'var list=' в свой контроллер, а затем как я получу доступ к этому списку в своем представлении внутри SelectList - person Steve; 21.04.2016
comment
@Steve, но вы создаете этот список с помощью приведенного выше кода? - person teo van kot; 21.04.2016
comment
@Steve в вашем контроллере, вы должны использовать ViewData.Model, чтобы сохранить это. А затем используйте модель, чтобы получить это значение. Или вы можете просто использовать ViewBag.list, а затем получить доступ к этим данным с помощью ViewBag.list в представлении. - person teo van kot; 21.04.2016
comment
и мое мнение @Html.DropDownList("Status", new SelectList(ViewBag.List, "Value", "Text"), new { @class = "form-control" }), пожалуйста, скажите мне, где я делаю неправильно. Я хочу, чтобы это значение ViewBag.IsDeleted было выбрано по умолчанию. - person Steve; 21.04.2016
comment
@ Стив, а где ViewBag.IsDeleted в твоем помощнике DropDownList? =) я имею в виду @Html.DropDownList("Status", new SelectList(ViewBag.List, "Value", "Text", ViewBag.IsDeleted), new { @class = "form-control" }) - person teo van kot; 21.04.2016

Если у вас есть модель со свойством Status, просто присвойте этому свойству значение (например, в контроллере):

Модель

public class Model
{

    public string Status {get;set;}
} 

Контроллер

public ActionResult SomeAction()
{
    //the value has to correspond to the Value property of SelectListItems
    //that you use when you create dropdown
    //so if you have new SelectListItem{ Text="Active", Value = "Active" }
    //then the value of Status property should be 'Active' and not a 0
    var model = new Model{Status = "Active"}

    return this.View(model);
}

Вид:

@model Model


@Html.DropDownListFor(m=>m.Status,new List<SelectListItem> { new SelectListItem{ Text="Active", Value = "Active" },new SelectListItem{ Text="InActive", Value = "InActive" }}, new { @class = "form-control" })
person Alex Art.    schedule 20.04.2016
comment
isDelete - это мое логическое свойство, но я не могу получить то же, что вы сказали, для выбранного значения - person Steve; 20.04.2016
comment
то есть показать имя столбца. имя столбца не приходило, но после написания FirstOrDefault отображалось имя столбца для модели - person Steve; 20.04.2016
comment
@Steve На самом деле похоже, что ваша модель представляет собой коллекцию (или список), а не отдельный объект ... - person Alex Art.; 20.04.2016
comment
пожалуйста, покажите вид и соответствующий код действия контроллера - person Alex Art.; 20.04.2016
comment
Давайте продолжим обсуждение в чате. - person Alex Art.; 20.04.2016