Sunil Thamban
Sunil Thamban

Reputation: 75

set the default value in a selectlist

I have the following class and editor template for creating a dropdownlist for various currencies.

public class Currency
{
    public string CurrencyId { get; set; }
    public string CurrencyName { get; set; }
}

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<morkyc.Core.Model.Currency>>" %>

<tr>
    <td style="width:50%;">
    <label class="fieldLabel">
    Specify Currency :
    </label>
    </td>
    <td>
        <%= Html.DropDownListFor(model => model, new SelectList(Model, "CurrencyId", "CurrencyName", ))%>
     </td>
</tr>

I create a list in my controller

 List<Currency> lCurrencyList = new List<Currency>(new Currency[]
        {
            new Currency{CurrencyId = "AED", CurrencyName = "United Arab Emirates Dirham (AED)"}, 
            new Currency{CurrencyId = "AFN", CurrencyName = "Afghan Afghani (AFN)"}, 
            new Currency{CurrencyId = "ALL", CurrencyName = "Albanian Lek (ALL)"}, 
            new Currency{CurrencyId = "AMD", CurrencyName = "Armenian Dram (AMD)"}, 
            new Currency{CurrencyId = "ANG", CurrencyName = "Netherlands Antillean Guilder (ANG)"},
            new Currency{CurrencyId = "AOA", CurrencyName = "Angolan Kwanza (AOA)"},
            new Currency{CurrencyId = "ARS", CurrencyName = "Argentine Peso (ARS)"}, 
            new Currency{CurrencyId = "AUD", CurrencyName = "Australian Dollar (AUD)"}, 
            new Currency{CurrencyId = "AWG", CurrencyName = "Aruban Florin (AWG)"}, 
            new Currency{CurrencyId = "AZN", CurrencyName = "Azerbaijani Manat (AZN)"}, 
            new Currency{CurrencyId = "BAM", CurrencyName = "Bosnia-Herzegovina Convertible Mark (BAM)"}, 
            new Currency{CurrencyId = "BBD", CurrencyName = "Barbados Dollar (BBD)"}, 
            new Currency{CurrencyId = "BDT", CurrencyName = "Bangladeshi Taka (BDT)"}, 
            new Currency{CurrencyId = "BGN", CurrencyName = "Bulgarian Lev (BGN)"},
new Currency{CurrencyId = "ZWD", CurrencyName = "Zimbabwe Dollar (ZWD)"}
        });

In my view i call the following view to create the dropdownlist

<%= Html.EditorFor(model => model.Currency)%>

This is working perfectly fine.

Could anybody please suggest as to how can i set the default selected item ?

Upvotes: 0

Views: 2637

Answers (1)

Darin Dimitrov
Darin Dimitrov

Reputation: 1038720

Your editor template is strongly typed to a currency list. Also you are passing a list as first argument to the DropDownListFor helper which is not good. You are never passing some selected value, so the best you could do in this editor template is to set the value to the first element of this list for example.

<%= Html.DropDownListFor(
    model => model, 
    new SelectList(Model, "CurrencyId", "CurrencyName", "AED")
)%>

But I guess that you want to dynamically pass this value. So I would modify your view model a little:

public class CurrencyViewModel
{
    public string SelectedCurrency { get; set; }
    public IEnumerable<SelectListItem> Currencies { get; set; }
}

then have the following editor template:

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<CurrencyViewModel>" %>

<tr>
    <td style="width:50%;">
        <label class="fieldLabel">
            Specify Currency :
        </label>
    </td>
    <td>
        <%= Html.DropDownListFor(
            model => model.SelectedCurrency, 
            new SelectList(Model.Currencies, "Value", "Text")
        )%>
     </td>
</tr>

and now in your controller:

public ActionResult Foo()
{
    var model = new CurrencyViewModel
    {
        // Define the selected value here
        SelectedCurrency = "AED",
        Currencies = new[]
        {
            new SelectListItem { Value = "AED", Text = "United Arab Emirates Dirham (AED)" }, 
            new SelectListItem{ Value = "AFN", Text = "Afghan Afghani (AFN)"}, 
            ...
        }
    };
    return View(model);
}

and finally in the view invoke the custom editor template:

<%= Html.EditorForModel() %>

Upvotes: 1

Related Questions