Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set the selected value in EnumDropDownListFor?

I'm using MVC 5.2.0 and I'm trying to use the new Html.EnumDropDownListFor. This is how I'm setting the values:

//Model
public class MyModel {
    public int SelectedEnumId { get; set; }
    public TestEnum MyEnum { get; set; }
}

//Enum
public enum TestEnum : int
{
    name1 = 1,
    name2 = 2
}

//View
@Html.EnumDropDownListFor(model => model.MyEnum,new { @class = "form-control" })

This is working and the values are being displayed. But how do I set the selected value (SelectedEnumId)?

Normally I would use

//Not enum
@Html.DropDownListFor(model => model.SelectedId, new SelectList(Model.myvalues, "Value", "Text"))

Is there a way to do this with the new Helper in MVC 5.1-5.2? Or I have to create a Extension method for this?

like image 985
Goca Avatar asked Jul 16 '14 01:07

Goca


2 Answers

As far as I know just make sure the value you want to be selected is set in your Model before you call

//Controller:
...
myModel.TestEnum = TestEnum.name2;
...

//On your view
...
@Html.EnumDropDownListFor(model => model.TestEnum);
...
like image 81
tobias Avatar answered Nov 18 '22 13:11

tobias


Could NOT get the option selected in the controller to display on the front end either, so had to resort to setting a temporary hidden input and used jQuery to update on the client side:

<div class="form-group">
@Html.LabelFor(model => model.MyEnum, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
    @Html.EnumDropDownListFor(model => model.MyEnum, "Select name", new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.MyEnum, "", new { @class = "text-danger" })
</div>
@Html.Hidden("MyEnumTemp", (int)Model.MyEnum)

<script>
    $(function () {
        $("#MyEnum").val($("#MyEnumTemp").val());
    });
</script>
like image 29
Doug Dekker Avatar answered Nov 18 '22 13:11

Doug Dekker