What about an ASP.NET MVC "DropDownListFor" Html Helper for Enum Type

- Emran Hussain,
14 April 2013, Sunday, 9:23:45 PM

The web development world is considering ASP.NET MVC seriously. Unlike ASP.NET Web Form controls, the Html Helpers are not rich for MVC but growing. Recently, I needed a DropDownListFor HTML Helper where we could simply pass the LINQ Expression for the model property (where the property is an enum type) and we wanted to let the helper create the HTML Select element with all enum values. When creating the select list, we wanted to show a meaningful string for Display Type, where a string could contain space, special character etc. Obviously, an enum value cannot contain space and special character etc. So, wanted to decorate some of the enum members with Description Attribute so that, the Select list can display those Description attribute as display field where the original enum member name would be used as Value field. Finally, we came up with a DropDownListFor overload HTML helper. I thought this tiny utility is worth sharing. So, here is what I came up with.

** I have used Screenshots for the code so that I could use visual elements to mark areas. Therefore you may not be able to copy the snippet directly from this page; the full working solution source code is attached, you can download and use the source code.

First, let me show you how to use this helper. We can define an enum type as follows. Please notice the Description Attribute on some of the enum members.

color_enum

Ok, then, in your View page, you can use snippet like this: (I have used Razor View Engine, but as you understand, it can be used with any other view engine)

viewpage_usage

This will result following Look:

generated_ui Generated HTML
generated_html

That's it. Now, when you submit your form, the FavouriteColor property will be submitted, you can capture this value from your Controller's action method as follows:

capture_in_action

That's all about the usage. Now, you can look into the tiny overloaded Html Helper extension source code here: (the full source code with sample MVC application is attached)

Source Code

© All content, photographs, graphs and images in this article are copyright protected by SpiceLogic Inc. and may not, without prior written authorization, in whole or in part, be copied, altered, reproduced or published without exclusive permission of its owner. Unauthorized use is prohibited.
Last edited on : 5 Dec 2016
Please feel free to share your comment.