Reputation: 97
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>
Upvotes: 0
Views: 588
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