A: 

Some code of what you have tried would be handy here kurozakura.

In the mean time;

If you have bound your view to a model then you can use UpdateModel to get the value back.

So if you bind to a class called User then;

User myUser = new User;
TryUpdateModel(myUser);

If you have not bound it then use the technique by Eduardo and use something like;

public ActionResult MyViewsAction(FormCollection collection)
{
  string a = collection["selectListCtrlname"];
}
griegs
well i did use the FormCollection but no luck, coz if i did that it would return just the string value which is stored ,the value is from the value of the dropdownlist,but i need the text
I'm not sure what you want is possible unless you set the Value attribute of each option item to be the text as well. So an option may look like <option value="This is the text of the option">This is the text of the option</option> though I don't know how far that would get you. There is one more way, see the next answer.
griegs
A: 

Right, if you build the list in code behind and you give each option a unique identifier, then you can grab that identifier and marry it up with an item in code and thus the text.

So;

public class MonthlyItemsFormViewModel
{
  public SelectList Months;
  public string SelectedMonth {get;set;}
}

then;

public ActionResult Index()
{
  MonthlyItemsFormViewModel fvm = new MonthlyItemsFormViewModel();
  FillData(fvm, DateTime.Now);
  return View(fvm);
}

And then;

private void FillData(MonthlyItemsFormViewModel fvm, DateTime SelectedMonth)
{
  List<string> months = DateTime.Now.MonthList(DateTime.Now);
  fvm.Months = new SelectList(months, fvm.SelectedMonth);
}

Then in your view;

<% using (Html.BeginForm()) { %>
  <%=Html.DropDownList("selectedMonth", Model.Months) %>
<%} %>

Then on post back;

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection collection)
{
  MonthlyItemsFormViewModel fvm = new MonthlyItemsFormViewModel();
  UpdateModel(fvm);
  FillData(fvm, DateTime.Parse(DateTime.Now.Year.ToString() + " " + fvm.SelectedMonth + " 01"));
  return View(fvm);
}

It's in the code on post back that you can grab the selected value from the fvm and then marry that value up with an item in your select list.

this code lifted directly from my code so might need to modify to suit your situation.

Does this make sense?

griegs
A: 

The class below uses reflection to get the text for the selected value in the list. Multiple selected list items are not supported.

using System.Web.Mvc;

/// <summary>
/// Provides a set of static methods for getting the text for the selected value within the list.
/// </summary>
public static class SelectListExtensions
{
    /// <summary>
    /// Gets the text for the selected value.
    /// </summary>
    /// <param name="list">The list.</param>
    /// <returns></returns>
    public static string GetSelectedText(this SelectList list)
    {
        foreach(var item in list.Items)
        {
            var dataValuePropertyInfo = item.GetType().GetProperty(list.DataValueField);
            var itemValue = dataValuePropertyInfo.GetValue(item, null);

            if(itemValue != null && itemValue.Equals(list.SelectedValue))
            {
                var textValuePropertyInfo = item.GetType().GetProperty(list.DataTextField);
                return textValuePropertyInfo.GetValue(item, null) as string;
            }
        }

        return null;
    }
}
Carl Saunders