Подтвердить что ты не робот

DropdownListFor значение по умолчанию

Есть ли простой способ добавить параметр "--Please select--" по умолчанию в DropDownListFor в MVC 3?

4b9b3361

Ответ 1

Итак, я сделал что-то вроде этого:

@Html.DropDownListFor(model => model.Dessert, 
                      new SelectList(Model.AvailableDesserts, "DessertID", "DessertName"),
                      "---Select A Dessert ---")

Кажется, все работает неплохо. Dessert в моей модели просмотра находится выбранная пользователем. AvailableDesserts - это набор из них. Надеюсь, что это поможет.

Ответ 2

У меня есть несколько методов расширения в SelectList

    public static SelectList PreAppend(this SelectList list, string dataTextField, string selectedValue, bool selected=false)
    {
        var items = new List<SelectListItem>();
        items.Add(new SelectListItem() { Selected = selected, Text = dataTextField, Value = selectedValue });
        items.AddRange(list.Items.Cast<SelectListItem>().ToList());
        return new SelectList(items, "Value", "Text");
    }
    public static SelectList Append(this SelectList list, string dataTextField, string selectedValue, bool selected=false)
    {
        var items = list.Items.Cast<SelectListItem>().ToList();
        items.Add(new SelectListItem() { Selected = selected, Text = dataTextField, Value = selectedValue });
        return new SelectList(items, "Value", "Text");
    }
    public static SelectList Default(this SelectList list,string DataTextField,string SelectedValue)
    {
        return list.PreAppend(DataTextField, SelectedValue, true);
    }

Тогда моя бритва выглядит так:

@Html.DropDownListFor(m=>m.SelectedState, 
    Model.StateList().Default("Select One",""))

Ответ 3

Привет, как насчет этого (в случае использования метода DisplayFor)

private IEnumerable<SelectListItem> AddDefaultOption(IEnumerable<SelectListItem> list, string dataTextField, string selectedValue)
    {
        var items = new List<SelectListItem>();
        items.Add(new SelectListItem() { Text = dataTextField, Value = selectedValue});
        items.AddRange(list);
        return items;
    }

Затем просто добавьте этот код в свой контроллер

//lambda expression binding
ViewBag.YourList = db.YourTable.Select(x => x).ToList().Select(x => new SelectListItem
        {
            Value = x.Id.ToString(),
            Text = x.DisplayName.ToString()
        });

        ViewBag.YourList = AddDefaultOption(ViewBag.YourList, "Select One...", "null", true);

И наконец, в представлении вы можете отобразить выпадающее меню, combobox, как это показано

    <div class="editor-label">
        Your Label
    </div>
    <div class="editor-field">
        @Html.DropDownListFor(model => model.ForeignKey, (IEnumerable<SelectListItem>)ViewBag.YourList)
    </div>

Ответ 4

Я хотел установить значение по умолчанию для того, что было передано в качестве параметра Url Parameter под названием SiteType:

    <div class="form-group">
        @Html.LabelFor(model => model.Type, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.Type, ChangeOrderSite.SiteTypeNames.Select(s => new SelectListItem { Text = s.Value, Value = s.Key.ToString(), Selected = s.Key.ToString() == Request["SiteType"] }), new { @class = "control-label col-md-2" })
            @Html.ValidationMessageFor(model => model.Type)
        </div>
    </div>

Мой раскрывающийся список - это список типов сайтов.