I got inspired with the very useful answer from Francois Borgies, so I decided to write a custom method that creates SelectList for Boolean value that can be used in @Html.DropDownList. When you have a helper method that can be used in every view, then it reduces the amount of code needed in razor views.
My project has CustomHelpers.cs class in folder: App_Code/Helpers
namespace YourProjectName.App_Code.Helpers
{
public static class CustomHelpers
{
public static SelectList SelectListForBoolean(object selectedValue = null)
{
SelectListItem[] selectListItems = new SelectListItem[2];
var itemTrue = new SelectListItem();
itemTrue.Value = "true";
itemTrue.Text = "Yes";
selectListItems[0] = itemTrue;
var itemFalse = new SelectListItem();
itemFalse.Value = "false";
itemFalse.Text = "No";
selectListItems[1] = itemFalse;
var selectList = new SelectList(selectListItems, "Value","Text", selectedValue);
return selectList;
}
}
}
In the create view you can use it as follows:
@model Foo
@using YourProjectName.App_Code.Helpers;
...
@Html.DropDownList("EndCurrentDeal", CustomHelpers.SelectListForBoolean(), "-select-")
for edit view
@model Bar
@using YourProjectName.App_Code.Helpers;
...
@Html.DropDownList("EndCurrentDeal", CustomHelpers.SelectListForBoolean(Model.EndCurrentDeal), "-select-")
Although my helper method is not pure HTML Helper because it creates SelectList, - it nevertheless follows same functionality that was presented by Rahul Rajat Singh, in his excellent article An Absolute Beginner's Tutorial on HTML Helpers and Creating Custom HTML Helpers in ASP.NET MVC