Q:

Cannot get Dropdownlist to work properly

I want a simple dropdownlist that contains the values "Ascending" and "Descending" which are then sent to the controller as sortOrder when the search button is pressed in the Index() method. I have tried so many different things and just cannot get this to work, what am I doing wrong.
P.S I do not want to make this a model, I just want to get back a simple "Asc" or "Desc" from the dropdown into the sortOrder variable.
UserController.cs
    public ViewResult Index( string searchString, string sortOrder = "Asc")
    {
        var sortOrderParam = new[]
            {
                new SelectListItem { Value = "Asc", Text = "Ascending" },
                new SelectListItem { Value = "Desc", Text = "Descending" }
            };

        var users = from u in db.TBL_SYS_USER
                    select u;

        if (!string.IsNullOrEmpty(searchString))
        {
            users = users.Where(x => x.USER_FIRST_NAME.ToUpper().Contains(searchString.ToUpper()));
        }

        switch (sortOrder)
        {
            case "Desc":
                users = users.OrderByDescending(u => u.USER_FIRST_NAME);
                break;
            default:
                users = users.OrderBy(u => u.USER_FIRST_NAME);
                break;
        }

        PopulateFieldDropdownList("");

        return View(users.ToList());
    }

Index.cshtml
@using (Html.BeginForm())
{
    <p>
        Search Criteria: @Html.TextBox("searchString")
        Order By: @Html.DropDownList("sortOrderParam")

        <input type="submit" value="Search"/>
    </p>
}

A:

In your Controller Action, you should create the list of DropDownList options and pass them to your View in a ViewBag, or as a property of your ViewModel. Like below:
public ViewResult Index(string searchString, string sortOrder = "Asc")
{
    var users = from u in db.TBL_SYS_USER
                select u;

    if (!string.IsNullOrEmpty(searchString))
    {
        users = users.Where(x => x.USER_FIRST_NAME.ToUpper().Contains(searchString.ToUpper()));
    }

    switch (sortOrder)
    {
        case "Desc":
            users = users.OrderByDescending(u => u.USER_FIRST_NAME);
            break;
        default:
            users = users.OrderBy(u => u.USER_FIRST_NAME);
            break;
    }

    PopulateFieldDropdownList("");

    var sortOrderOptions = new List<SelectListItem>();
    sortOrderOptions.Add(new SelectListItem { Value = "Asc", Text = "Ascending" });
    sortOrderOptions.Add(new SelectListItem { Value = "Desc", Text = "Descending" });
    ViewBag.SortOrderOptions = sortOrderOptions;

    return View(users.ToList());
}

The first argument in Html.DropDownList method is the name of the field (which will be the name of the value that will be posted to your Action), and the second one is an IEnumerable<SelectListItem> which are the options in the DropDownList.
So, your View will look like this:
@using (Html.BeginForm())
{
    <p>
        Search Criteria: @Html.TextBox("searchString")
        Order By: @Html.DropDownList("sortOrderParam", ViewBag.SortOrderOptions)

        <input type="submit" value="Search"/>
    </p>
}

