I have an enumeration in my project and I’ve created a custom editor template for this enumeration. So, now any model I have with a property with a type of this enumeration, will render a drop down.
This works great, but I would like to name my select element of my dropdown with the name of the property. Here is my Razor code for my editor template.
@model ItemEnumerations.ItemType
<select id="PropertyNameHere" name="PropertyNameHere">
@foreach (ItemEnumerations.ItemType in Enum.GetValues(typeof(ItemEnumerations.ItemType))) {
<option value="@value" @(Model == @value ? "selected=\"selected\"" : "")>@value.ToString()</option>
}
</select>
So, where I have ‘PropertyNameHere’ for the select elements id and name attributes, I would like to have the name of the property of my model. Here is an example:
My Model:
public class MyModel{
public int ItemID {get;set;}
public string ItemName {get;set;}
public ItemEnumerations.ItemType MyItemType {get;set;}
}
My View Code:
@model MyModel
@Html.LabelFor(m => model.ItemID)
@Html.DisplayForm(m => model.ItemID)
@Html.LabelFor(m => model.ItemName)
@Html.EditorFor(m => model.ItemName)
@Html.LabelFor(m => model.MyItemType )
@Html.EditorFor(m => model.MyItemType )
I would like my select element to have a name and id of ‘MyItemType’.
I found the answer in a book I have here. Actually, it got me close, but I then could google the rest based on what I found.
Here is what I needed to add to my editor template.