DanielXu
DanielXu

Reputation: 97

DropDownList getting more than one values in MVC3

I am working on a membership app created in MVC3. I have two different kinds of members Organisation and Individual. After they paying the membership fee, I need to track their payment history. Thus, in the first row (the field after text Member), I need to display the "OrganisationName" of Organisation and "MemberForname" of Individual in DropDownList. But now I can only display either "OrganisationName" or "MemberForname". I tried a lot, but still can't figure it out by displaying both. Any ideas? Thanks in advance.[The screen shot above only displays "OrganisationName", and the bottom one only displays "MemberForname"].

        <td>
            Member
        </td>
        <td>
            @Html.DropDownList("member", ((IEnumerable<ProActiveMembership.Areas.Members.Models.Member>)ViewBag.PossibleMembers).Select(option => new SelectListItem
            {
                Text = Html.DisplayTextFor(_ => option.Forename).ToString(),
                //Text = Html.DisplayTextFor(_ => option.OrganisationName).ToString(),

                Value = option.MemberID.ToString(),
                Selected = (Model != null) && (option.MemberID == Model.MemberID)
            }), "Choose...", new { id = "ddl" })
            @Html.ValidationMessageFor(model => model.MemberID)
        </td>

enter image description here

Upvotes: 0

Views: 588

Answers (1)

Mattias Jakobsson
Mattias Jakobsson

Reputation: 8237

You can set the Text property like this: Text = string.Format("{0} {1}", option.Forename, option.OrganisationName)

Your code would then look like this:

<td>
    Member
</td>
<td>
    @Html.DropDownList("member", ((IEnumerable<ProActiveMembership.Areas.Members.Models.Member>)ViewBag.PossibleMembers).Select(option => new SelectListItem
    {
        Text = string.Format("{0} {1}", option.Forename, option.OrganisationName),
        Value = option.MemberID.ToString(),
        Selected = (Model != null) && (option.MemberID == Model.MemberID)
    }), "Choose...", new { id = "ddl" })
    @Html.ValidationMessageFor(model => model.MemberID)
</td>

As andreister suggests you can also add a member to ProActiveMembership.Areas.Members.Models.Member that returns the full name. Something like this:

public string FullName { get { return string.Format("{0} {1}", Forename, OrganisationName); } }

You can then use the new member like this:

Text = option.FullName

Upvotes: 3

Related Questions